코딩테스트 문제 37

[프로그래머스/Python] 콜라츠 추측

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12943 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 재귀 global cnt cnt = 0 def solution(num): global cnt if cnt > 500: return -1 if num == 1: return cnt if num%2 == 0: cnt += 1 return solution(num//2) else: cnt += 1 return solution(num*3 + 1) 2. 반복문 def solution(num): c..

[프로그래머스/Python] 베스트 앨범

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42579#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr genres: 음악 장르 plays: 재생 횟수 음악 장르를 key, 장르에 대한 전체 재생 횟수를 value로 딕셔너리를 만든다 def solution(genres, plays): answer = [] dic = {} #장르에 대해서 한 번 d = {} for i in range(len(genres)): d[genres[i]] = d.get(genres[i], 0) + plays[i..

[프로그래머스/Python] 기능개발

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 큐 사용 남은 퍼센트 리스트에 저장 def solution(progresses, speeds): answer = [] #몇 퍼센트 남았는지: 100-progresses percent = [100-i for i in progresses] 배포 가능 날짜 세기 percent : 남은 퍼센트 speeds : 하루에 끝낼 수 있는 퍼센트 percent // speeds 나머지가 있으면 +1 ,..

[프로그래머스/Python] 햄버거 만들기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 2 3 1 순서가 되면 +1씩 해서 총 카운트 수를 리턴 1. 스택 사용 재료를 하나씩 스택에 넣다가 재료가 1이면 스택에 쌓인 3개를 본다 3개가 1 2 3이면 카운트 def solution(ingredient): #1 2 3 1 answer = 0 stk = [] for i in ingredient: if i == 1: if stk[-3:] == [1, 2, 3]: del stk[-..

[프로그래머스/Python] 카드 뭉치

문제 https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 각 카드 뭉치 중 맨 앞의 카드만 사용하여 goal을 만들 수 있으면 Yes 리턴, 아니면 No 리턴 1. deque() 라이브러리 from collections import deque deque()를 이용하여 스택과 큐처럼 이용할 수 있다. deque() 생성 queue = deque() queue = deque([1,2,3,4,5]) deque() 함수 .appendleft(x) 맨 앞..

[프로그래머스/Python] 숫자 짝궁

문제 https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr X, Y 의 공통된 수가 없으면 -1 리턴, 공통된 수가 있다면 최대값을 만들어서 리턴 1. min() 사용 0~9 갯수를 저장할 리스트를 만든다 for문을 돌면서 각 리스트에 갯수 저장 최대값을 만들기 위해 9부터 0까지 아래로 내려간다 둘 다 리스트 안이 0이 아닐 때 두 리스트 중 최솟값을 찾는다 : min() 최솟값만큼 숫자 반복 문자열 반복 : * 예) 'a' * 3 -> 'aaa..

[프로그래머스/Python] 시저 암호

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12926 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문자에 n만큼 더하여 만든 암호 리턴 ord() 와 chr()을 사용 chr(정수) -> 아스키코드 문자로 바꿔줌 ord(문자) -> 아스키코드 숫자로 바꿔줌 ord('a') #97 ord('z') #122 ord('A') #65 ord('Z') #90 #26개가 있음 소문자, 대문자, 공백을 나눠서 생각 if, elif, else로 나눔 알파벳은 총 26개라는 것을 이용 def soluti..

[프로그래머스/Python] 신고 결과 받기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 중복된 신고 제외 k번 이상 신고된 사용자를 '신고한 사람'에게 메일 전송한 값을 리턴 set() 사용 report를 set()를 이용하여 중복 요소 제거 report를 split()하여 신고한 사람(리스트[0])과 신고 당한 사람(리스트[1])을 나눈다 -> ["신고자 id1", "신고당한자 id1"] 2차원 배열 report 예시) [['frodo', 'neo'], ['apeach', '..

[프로그래머스/Python] 둘만의 암호

문제 https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 스킵할 알파벳 제외 인덱스만큼 뒤의 알파벳으로 바꿔서 문자열로 리턴 chr() ord() 사용 chr(정수) -> 아스키코드 문자로 바꿔줌 ord(문자) -> 아스키코드 숫자로 바꿔줌 ord('a') #97 ord('z') #122 ord('A') #65 ord('Z') #90 #26개가 있음 a~z까지 아스키코드 숫자를 넣은 리스트 만들기 set() - set() 를 이용한 차집합 + s..

[프로그래머스/Python] 문자열 밀기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120921 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr A 문자열을 몇 번 밀면 B가 나오는지 리턴(없으면 -1) 1. 반복문 사용 A[-1] 맨 마지막 문자 A[:-1] 처음부터 맨 마지막 전까지의 문자열 def solution(A, B): answer = -1 #같다면 if A == B: answer = 0 #다르다면 else: #len -1 만큼 돌고 B와 같은지 확인 cnt = 0 for _ in range(len(A)-1): A = A..