도비LOG(跳飛錄)

도비의 AI 엔지니어 도전기

프로그래머스 9

[프로그래머스 두 원 사이의 정수 쌍] 파이썬 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/181187 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 요약반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return※ 각 원 위의 점도 포함하여 센다. 풀이1. 1사분면만 고려하고 계산한 뒤 나중에 4를 곱한다.2. x좌표를 0부터 r2까지 순회하면서,    2.1. 각 x에 대해 r1     2.2. y의 상한과 y의 하한을 구한다.3. x축과 y축 상의 중복 계..

알고리즘 2024.06.23

[프로그래머스 요격 시스템] - 파이썬 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/181188?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 요약각 폭격 미사일의 x 좌표 범위 목록 targets이 매개변수로 주어질 때, 모든 폭격 미사일을 요격하기 위해 필요한 요격 미사일 수의 최솟값을 return한다. 풀이target들끼리 겹치는 구간이 있다면 미사일을 한 번만 쏘면 된다. 반면, target들끼리 겹치는 구간이 없을 경우 별개의 미사일을 또 쏘아야 한다.따라서 target의 e를 기준으로 오름차순..

알고리즘 2024.06.23

[프로그래머스 보석 쇼핑] - 파이썬 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 보석이 진열된 배열이 주어졌을 때, 모든 종류의 보석을 적어도 1개 이상 포함하는 가장 짧은 구간을 찾아라. 풀이 문제의 제한사항에서 gems의 길이가 최대 100,000이라고 하니, 완전탐색을 할 경우 시간초과가 발생할 위험이 있다. 따라서 다른 접근법을 생각해봐야 한다. 리스트 내의 부분리스트를 투포인터로 차례차례 탐색하면서, 만약 모든 보석을 포함하는 부분리스트를 발견할 경우 이를..

알고리즘 2023.06.02

[프로그래머스 불량 사용자] 파이썬 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 응모자 아이디 배열 user_id와, 일부를 *로 가린 불량 사용자 배열 banned_id이 주어졌을 때, 제제 아이디 목록은 몇 가지 경우의 수가 가능한지를 return 풀이 permutation을 활용한다. 먼저, user_id에서 banned_id의 원소 수만큼 가능한 순열을 모두 구한다. 그리고 구해진 각 순열들을 순회하면서, 해당 순열 내의 user_id가 banned_id에 ..

알고리즘 2023.06.01

[프로그래머스 프렌즈4블록] - 파이썬 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 2차원 행렬 모양의 게임판에서 2x2 형태로 4칸이 일치하면 해당 칸들을 삭제하고, 해당 칸들의 위에 있던 칸들이 그대로 내려오는 게임에서, 칸이 삭제되는 수를 리턴한다. 풀이 2x2 형태의 4칸이 모두 일치하는가를 확인한다. 일치한다면 해당 칸들을 제거한다. 칸을 제거하는 것은 '0'이라는 표시를 해주는 것으로 대체한다. 칸을 제거하면서 제거한 만큼 카운트해준다. 삭제할 칸들을 다시 ..

알고리즘 2023.05.17

[프로그래머스] 가장 긴 팰린드롬 - 파이썬 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/12904 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수 완성. 풀이 파이썬에서 문자열의 팰린드롬 여부는 아래의 코드를 이용해 간단하게 검증할 수 있다. 문자열을 s라고 한다면, s == s[::-1] 이때의 출력이 True라면 팰린드롬이며 그렇지 않으면 팰린드롬이 아니다. 이 코드를 활용하여 다음과 같이 문제를 해..

알고리즘 2023.05.09

[프로그래머스 단속카메라] - Python 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 모든 차량이 카메라를 한번은 만나도록 카메라를 설치한다. 이때 최소 몇 개의 카메라를 설치해야 하는가? 풀이 문제에서 시작점 혹은 도착점에 카메라를 설치해도 된다고 하였으므로, 도착점 혹은 시작점에 카메라를 설치하는 게 카메라가 다른 차도 찍게 될 가능성을 높이는 방법이다. 풀이 과정은 다음과 같다. 1. 계산의 편의를 위해 입력 배열 routes를 도착점을 기준으로 오름차순으로 정렬해..

알고리즘 2023.05.08

[프로그래머스 N진수 게임] - Python 풀이 (LV.2)

https://school.programmers.co.kr/learn/courses/30/lessons/17687 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 문제에서 정의하는 게임 규칙에 따라서, 숫자들을 n진법으로 변환한 뒤, 튜브의 차례가 왔을 때 어떤 것을 말해야 하는지를 리턴해야 한다. 풀이 먼저 주어지는 수들을 n진법으로 변환해주는 함수 n_convertor를 선언해준다. 그리고 0부터 t*m-1까지의 수를 n진법으로 변환한 시퀀스를 만들어준다. 마지막으로 튜브가 말해야 하는 숫자만을 선별해준다. # 프로그래머스 N진수 게임 htt..

알고리즘 2023.05.08

[프로그래머스] 연속된 부분 수열의 합 (Lv.2) - 파이썬 풀이

풀이 투포인터 방법을 이용한다. left 포인터를 고정시키고 left 포인터 뒤부터 차례대로 훑어가면서 부분합을 누적시키고, 부분합이 k에 도달하였을 때 left와 right 인덱스를 정답 후보군 배열(result)에 추가해준다. 그 뒤 result 배열을 right - left 순으로 정렬해준 뒤, 길이가 가장 짧은 부분 수열을 리턴한다. # 프로그래머스 연속된 부분 수열의 합 LV2 https://school.programmers.co.kr/learn/courses/30/lessons/178870 def solution(sequence, k): result = [] right = 0 summation = 0 for left in range(len(sequence)): while right < len(..

알고리즘 2023.05.06