코딩 테스트/Level 2
-
8. 다리를 지나는 트럭코딩 테스트/Level 2 2020. 7. 22. 09:25
https://programmers.co.kr/learn/courses/30/lessons/42583 문제에서 제시된 조건을 프로그래밍 언어로 그대로 옮겨주면 되는데 구현이 어렵지 않습니다. 다리만큼 배열을 만들고 거기에 트럭을 하나씩 올리면서 무게 체크를 하면서 한칸씩 옮겨주면 됩니다. 다만 약간의 최적화를 해주면 더욱 좋은 결과가 나오기 때문에 시간 제한에 유의하셔야 합니다. 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr 파이썬 def solution(bridge_length, wei..
-
7. 가장 큰 수 ⁂코딩 테스트/Level 2 2020. 7. 20. 22:38
https://programmers.co.kr/learn/courses/30/lessons/42746 많은 사람들이 푼 문제입니다만.. 이 많은 사람들이 이 문제를 스스로 풀었을까? 의문이 생깁니다. 평범하지 않은 풀이에 아주 많은 정답자가 있는 걸 봐도... 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 �� programmers.co.kr 파이썬 단순하게 주어진 조건에 따라 코딩해 봅니다. def solution(numbers): numbers = list(map(str,..
-
6. 쇠막대기코딩 테스트/Level 2 2020. 7. 20. 22:12
https://programmers.co.kr/learn/courses/30/lessons/42585 코딩테스트 연습 - 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 합니다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자릅니다. 쇠막대기와 레� programmers.co.kr 파이썬 def solution(arrangement): sum, stack = 0, 0 for element in arrangement: if element == '(': # '('인 경우 stack += 1 # 막대가 하나 쌓인다. last = '(' # '('을 지나갔음을 기록해 둔다. else: # ')' 인 경우 if last == '(': # 직전 블럭이..
-
5. 프린터코딩 테스트/Level 2 2020. 7. 20. 19:47
https://programmers.co.kr/learn/courses/30/lessons/42587 파이썬(Python) 코딩량을 줄이기 위해 pop(0)을 썼는데 리스트가 길거나 빈번한 pop(0)이 필요할 땐 collections.deque를 사용하는 게 좋겠습니다. def solution(priorities, location): answer = 0 while priorities: if priorities[0] >= max(priorities): # 반복문 내의 max 함수는 속도에 영향을 많이 줍니다. answer += 1 priorities.pop(0) location -= 1 if location == -1: return answer else: priorities.append(prioritie..
-
4. 위장코딩 테스트/Level 2 2019. 11. 11. 21:10
https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 딕셔너리 (맵) 자료형을 이용해서 카운트할 수 있습니다. 파이썬 def solution(clothes): temp = {} for _, cat in clothes: if cat in temp: temp[cat] += 1 else: temp[cat] = 1 answer = 1 for each in temp.values(): answer *= each + 1 return answer - 1 딕셔너리의 setdefault를 사용하면 코드를 더 줄일 수 있습니다. def solution(clothes): temp = {} for _, cat in clot..
-
3. 탑코딩 테스트/Level 2 2019. 11. 10. 23:07
https://programmers.co.kr/learn/courses/30/lessons/42588 파이썬 제시된 조건 그대로 풀었습니다. range 함수의 사용법을 안다면 쉽게 풀 수 있습니다. def solution(heights): answer = [0] * len(heights) for i in range(len(heights) - 1, 0, -1): # for i in range(len(heights) - 1, -1, -1): for j in range(i - 1, -1, -1): if heights[i] < heights[j]: answer[i] = j + 1 break return answer 자바스크립트 일단 쉽게 처리해 보았습니다. 초기화 부분이 좀 거슬리죠? function solut..
-
2. 피보나치 수코딩 테스트/Level 2 2019. 11. 8. 23:06
https://programmers.co.kr/learn/courses/30/lessons/12945 저의 블로그에서도 다룬 적 있는 문제입니다. https://comdoc.tistory.com/entry/33-피보나치-수열과-동적-프로그래밍 파이썬 재귀의 예로 많이 사용됩니다만, 문제의 조건인 100,000은 파이썬의 재귀 한계를 넘겨 버립니다. RecursionError: maximum recursion depth exceeded in comparison 재귀를 쓰지 말고, 반복문을 사용합니다. 문제를 그대로 코딩하면 이렇습니다만.. def solution(n): f0, f1 = 0, 1 for i in range(2, n+1): f0, f1 = f1, (f1 + f0) return f1 % 1234..
-
1. 전화번호 목록코딩 테스트/Level 2 2019. 11. 8. 00:04
https://programmers.co.kr/learn/courses/30/lessons/42577 파이썬 def solution(phone_book): for num1 in phone_book: for num2 in phone_book: if num1 != num2: k = min(len(num1), len(num2)) if num1[:k] == num2[:k]: return False return True """ 효율성 테스트 테스트 1 〉통과 (0.16ms, 15.3MB) 테스트 2 〉통과 (0.15ms, 15.3MB) """ 자바 향상된 for 문을 사용하지 않고 고전적으로 ... 읽기 싫어지네요. class Solution { public boolean solution(String[] phon..