본문 바로가기

Algorithm/프로그래머스

(48)
[프로그래머스] Lv.2 멀쩡한 사각형 https://school.programmers.co.kr/learn/courses/30/lessons/62048 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 직사각형이 있다면 대각선으로 가로질렀을 때 선과 접하는 부분을 제외한 사용 가능한 부분의 개수를 구해야 한다. 먼저 자료형에 대해 생각해야 한다. 반환해야 하는 자료형은 long인데 매개변수는 모두 int로 주어졌다. 연산을 하는 과정에서 w와 h가 계속 필요한데 그때마다 캐스팅이 불편하니 처음부터 형변환을 시켜주었다. 이후에, 예시 그림을 보면 8(가로), 12(세로)를 최대공약수..
[프로그래머스] Lv.2 124 나라의 숫자 https://school.programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 우선 n이 3의 배수가 아니라면 3진법을 구하는 것과 동일하게 3으로 나눈 나머지를 저장하고, n을 3으로 나눈 몫으로 저장한다. n이 3의 배수라면 무조건 4를 추가하고, n을 3으로 나눈 몫에서 1을 뺀 값을 저장한다. 2. 정답코드 def solution(n): answer = '' while n: if n % 3 == 0: answer = '4' + answer n = n /..
[프로그래머스] Lv.2 가장 큰 수 https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 가령 [3,300,31,387] 라는 숫자 리스트가 있다면 가장 큰 조합은 --> 387 3 31 310 이다. 가장 작은 수가 3 이더라도, 첫째자리 숫자 "3"은 310 31 의 두번째 자리 숫자 "1" 보다 크기 때문에, 3은 310 31 보다 앞에 나온다. 또 31은 31의 두번째 자리숫자 "1" 이 310 의 세번째 자리 숫자 "0" 보다 크기 때문에, 310 보다 앞에 나..
[프로그래머스] Lv.2 다리를 지나는 트럭 https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 def solution(bridge_length, weight, truck_weights): from collections import deque q = deque(truck_weights) bridge = deque([0] * bridge_length) answer = 0 total = 0 while q: answer += 1 total -= bridge[0] bridge.popleft..
[프로그래머스] Lv.2 게임 맵 최단거리 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 def solution(maps): from collections import deque q = deque() q.append((0, 0)) answer = 0 chk = [[False] * len(maps[0]) for _ in range(len(maps))] dy, dx = [0, -1, 0, 1], [1, 0, -1, 0] while q: ey, ex = q.popleft() for ..
[프로그래머스] Lv.2 스킬트리 https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 (본인) def solution(skill, skill_trees): answer = [] for tree in skill_trees: allow_skill = [] for alpha in tree: if alpha in skill: allow_skill.append(alpha) for idx, sk in enumerate(allow_skill): if sk != skill[idx]: a..
[프로그래머스] Lv.2 오픈채팅방 (카카오) https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 def solution(record): answer = [] user = {} for history in record: string = history.split() if string[0] == 'Enter': user[string[1]] = string[2] elif string[0] == 'Change': user[string[1]] = string[2] for history in re..
[프로그래머스] Lv.2 더 맵게 https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 def solution(scoville, K): import heapq heap = [x for x in scoville] heap.sort() answer = 0 while heap[0] < K and len(heap) != 1: num = heapq.heappop(heap) + (heapq.heappop(heap) * 2) heapq.heappush(heap, num) answer +..