프로그래머스 | 점프와 순간 이동 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 코드def solution(n): answer = 0 while n > 0: if n % 2 == 0: # 짝수이면 //2 n = n // 2 else: # 홀수이면 -1 n = n - 1 answer += 1 # -1 하는 횟수가 답 return answer문제를 보자마자 그리디 유형이 아닐까.. 하고 생각했다. 순간이동의 횟수를 최대로 해야 건전지 사용량이 최소가 될 수 있기 때문에 어떻게 순간이동의 횟수를 최대화하느냐가 관건이었다. 하지만 주어진 예시를 봐도 기준을 잘 모르겠어서 힌트를 찾아 인터넷 세상을 ..
프로그래머스 | 피보나치 수 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음 시도한 코드 import sys sys.setrecursionlimit(10**6) def fibo(x): if x == 0: return 0 elif x == 1: return 1 else: return fibo(x-1) + fibo(x-2) def solution(n): return fibo(n) % 1234567 문제 이름을 보자마자 피보나치 함수 정도는 쉽게 구현할 수 있지!라고 생각했지만 결과는 처참했다. 런타임 에러도 아닌 시간초과를 맞닥뜨려 너무나 당황스러웠다. 어떻게 해결해야 할지 하나도 ..
프로그래머스 | 숫자의 표현 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(n): answer = 0 # 연속된 자연수로 n을 표현하는 방법의 수 for i in range(1, n+1): hap = 0 # hap이 n보다 크거나 같아질 때까지 i부터 순차적으로 더함 while hap < n: hap += i i += 1 if hap == n: # 만약 hap이 n과 같으면 연속된 자연수로 나타낼 수 있으므로 방법 +1 answer += 1 return answer 자연수 n을 연속된 자연수로 표현할 수 있는 가짓수를 구하는 문제이다. 예를 들어, n=1..
프로그래머스 | 최솟값 만들기 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음 시도한 코드 def solution(A,B): answer = 0 for i in range(len(A)): a = A.pop(A.index(min(A))) b = B.pop(B.index(max(B))) answer += a * b return answer 두 배열에서 뽑은 각각의 원소의 곱의 누적합이 최소가 되는 경우의 값을 구해야 하는 문제이다. 문제의 예시를 보며 한쪽 리스트에서는 최솟값을 순서대로 고르고, 다른 쪽 리스트에서는 최댓값을 순서대로 고르는 경우가 정답이라고 생각하게 되었다. 그래서 ..
프로그래머스 | 2022 KAKAO BLIND RECRUITMENT | 신고 결과 받기 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(id_list, report, k): dict = {i:[] for i in id_list} # 유저ID : 신고한 ID stop = {i:0 for i in id_list} # 유저별 신고 당한 횟수 for re in set(report): # set으로 중복 제거 dict[re.split()[0]].append(re.split()[1]) stop[re.split()[1]] += 1 stop_id = [] # 정지된 ID for key, value in stop.items(): ..
프로그래머스 | 2023 KAKAO BLIND RECRUITMENT | 개인정보 수집 유효기간 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 방법 1) - 연/월/일 비교 def solution(today, terms, privacies): today = list(map(int, today.split('.'))) # [0]연, [1]월, [2]일 terms = {i[0]: int(i[2:])for i in terms} # 딕셔너리 answer = [] # 파기해야할 정보 for i, pri in enumerate(privacies): # 하나씩 비교 day, kind = pri.split() day = list(map(int, day.split('..