📙 Level 2 연습
이번 포스팅에서는 프로그래머스 Level 2 단계의 문제를 여러개 풀어보겠습니다. 그동안 백준에서 골드 단계 문제에 비하면 쉬운 수준이라 여러개를 한번에 포스팅하도록 하겠습니다. 혹시나 질문사항이 있거나 문제를 푸는 알고리즘에 대해서 더 자세하게 알고 싶으시다면 댓글 남겨주시길 바랍니다!!
2019 KAKAO BLIND RECRUITMENT 오픈채팅방
문제 바로가기
생각
이 문제는 Log 값을 보고 Message를 출력하는 것입니다. 그런데 유저의 nickName 값이 변할 수가 있으므로 각 유저의 고유 id 값을 통해서 Message를 저장하는 것이 중요합니다. 따라서 배열을 만든 다음 각 Message의 순서를 저장한 후 마지막에 닉네임이 바뀐 것을 적용한 Message를 출력해주면 됩니다.
연습문제 124 나라의 숫자
문제 바로가기
생각
이 문제는 이진법의 논리와 비슷한데 여기서는 1, 2, 4 이렇게 3개의 숫자를 활용하는 것입니다. 따라서 일반적인 이진법을 하는 것처럼 주어진 숫자를 3의 제곱 형태로 최대한 분리해준다음 진행하면 쉽습니다.
def solution(n): answer = '' count = 0 while n >= 3 ** count: n -= 3 ** count count+=1 while count > 0: a = 0 count -= 1 while n >= 3 ** (count): n -= 3 ** (count) a+=1 if a == 0: answer += '1' elif a == 1: answer += '2' elif a == 2: answer += '4' return answer스택/큐 기능개발
문제 바로가기
생각
미리 선행되어 있는 일을 끝나야 그 다음 일을 같이 배포할 수 있습니다. 이때 날짜와 index 값을 점점 늘려가면서 비교를 해주었습니다.
def solution(progresses, speeds): answer = [] days = 1 index = 0 count = 0 while index < len(progresses): if progresses[index] + speeds[index]*days >= 100: count += 1 index += 1 if index == len(progresses): answer.append(count) else: if count > 0 : answer.append(count) count = 0 days += 1 return answer2020 KAKAO BLIND RECRUITMENT 문자열 압축
문제 바로가기
생각
문자열을 잘 파싱한뒤, 비교해주면 됩니다. 이때 저는 deque를 사용하여서 남은 문자열과 이미 검사한 문자열로 나눠서 비교하는 방식을 선택했습니다. 이러한 방식으로 겹치는 부분을 모두 카운트 한다음 조건에 맞게 출력해주면 됩니다.
Summer/Winter Coding(2019) 멀쩡한 사각형
문제 바로가기
생각
수학적인 생각을 도와주는 문제입니다. 최대 공약수를 이용해서 문제를 풀면 쉽게 풀 수 있습니다!!
def solution(w,h): answer = w * h x, y = w, h while y: x, y = y, x % y minRect = (w // x) + (h // x) - 1 answer -= x*minRect return answer