문제설명 해결코드 단순 구현 문제이지만, 가독성 있게 짜보려고 고생을 좀 했습니다. 코드는 역시 단순하면서 가독성이 좋게 보는 것이 가장 좋은 코드라고 생각합니다. def solution(cards1, cards2, goal): for g in goal: if len(cards1) > 0 and g == cards1[0]: cards1.pop(0) elif len(cards2) > 0 and g == cards2[0]: cards2.pop(0) else: return "No" return "Yes"
문제설명 해결코드 프로그래머스 1단계에 해당하는 문제이다. 솔직히 문제 자체는 어렵지 않은데 테스트 케이스가 별로 없어서 약간 중의적인 해석이 가능했던 문제라 아마도 정답률이 적은거 같다. def solution(s, skip, index): abc = [chr(i) for i in range(97, 123) if not chr(i) in skip] * 3 answer = '' for i in s: answer += abc[abc.index(i) + index] return answer 코드해설 코드 해설은 입출력 예제 1번을 통해 진행하도록 하겠습니다. 풀이설명1 # 풀이설명1 : ASCII 코드로 알파벳 배열 만들기. 단 skip에 들어가는 글자는 제외 abc = [chr(i) for i in ran..
문제설명 해결코드 그리디를 사용해서 구현하였다. 문제에 주어진 book_time의 길이 즉 예약이 1000개 이하기 때문에 O(n2)으로 풀어도 된다는 것을 감안하고 접근하였다. def solution(book_time): # 풀이설명1 : 함수 만들기 def change_min(str_time: str) -> int: return int(str_time[0:2]) * 60 + int(str_time[3:]) #풀이 설명2 : 예약 시간이 빠른 순으로 정렬하기 book_times = sorted([[change_min(i[0]), change_min(i[1]) + 10] for i in book_time]) #풀이 설명3 : 방 배정하기 rooms = [] for book_time in book_time..
문제 설명 해결 코드 스택을 사용해서 간단하게 해결하였다. 알고리즘을 어느정도 풀다보니, 문제 유형이 눈에 들어오기 시작했다. def solution(numbers): answer = [-1] * len(numbers) stack = [] for i, number in enumerate(numbers): while stack and stack[-1][1] < number: j, _ = stack.pop() answer[j] = number stack.append((i, number)) return answer 코드 해설 입출력 예제 2번을 바탕으로 풀이 진행 하였습니다. 메인 로직 1 # numbers = [9, 1, 5, 3, 6, 2] def solution(numbers): answer = [-1]..