코딩 테스트
-
24. 최대공약수와 최소공배수코딩 테스트/Level 1 2019. 10. 22. 21:17
https://programmers.co.kr/learn/courses/30/lessons/12940 최대공약수 문제는 유클리드 호제법으로 푸는 게 정석입니다. 전수조사(brute force)로는 시간제한에 걸려 통과할 수 없는 경우가 많습니다. 유클리드 호제법에 대해 아주 간략하게 설명을 드린 적 있습니다. https://comdoc.tistory.com/entry/%EC%B5%9C%EB%8C%80%EA%B3%B5%EC%95%BD%EC%88%98-%EC%B5%9C%EC%86%8C%EA%B3%B5%EB%B0%B0%EC%88%98 파이썬 기본적인 풀이입니다. def solution(n, m): g = n * m while m: if m < n: m, n = n, m m = m % n return [n, g..
-
23. 콜라츠 추측코딩 테스트/Level 1 2019. 10. 21. 23:06
https://programmers.co.kr/learn/courses/30/lessons/12943 파이썬 def solution(num): count = 0 while count 1: count += 1 if num % 2: num = num * 3 + 1 else: num = num / 2 return -1 if count == 500 else count 3항 연산자를 쓰면.. def solution(num): count = 0 while count 1: count += 1 num = (num * 3 + 1) if (num % 2) else (num / 2) return -1 if (count == 500) else count 테스트 1 〉통..
-
22. 하샤드 수코딩 테스트/Level 1 2019. 10. 20. 23:30
https://programmers.co.kr/learn/courses/30/lessons/12947 앞서 풀었던 21.자릿수 더하기와 유사합니다. 참고. 파이썬 def solution(x): return not (x % sum([int(i) for i in str(x)])) def solution(x): return not (x % sum(map(int, str(x)))) 자바스크립트 function solution(x) { return !(x % String(x).split('').map(Number).reduce((a, b) => a + b)) } 자바 class Solution { public boolean solution(int x) { int sum = 0; for (char num: Stri..
-
21. 자릿수 더하기코딩 테스트/Level 1 2019. 10. 19. 23:35
https://programmers.co.kr/learn/courses/30/lessons/12931 파이썬 가장 정석적인 풀이를 보겠습니다. 10으로 나눠서 나머지를 추려내는 방식으로 각 자릿수를 분리합니다. def solution(x): total = 0 while x != 0: total += x % 10 x = x // 10 return total 그런데 %도 나누기 //도 나누기입니다. 나누기를 1번만 할 수는 없을까요? 내장 함수(BIF) 중 divmod 함수를 이용하면 됩니다. https://wikidocs.net/32#divmod (다만 divmod이 나누기를 두 번 하는 것보다 항상 빠른 게 아닙니다. 작은 수에선 더 느림 ㅠ,.ㅠ) https://stackoverflow.com/ques..
-
20. 행렬의 덧셈코딩 테스트/Level 1 2019. 10. 18. 15:49
https://programmers.co.kr/learn/courses/30/lessons/12950 파이썬 기본적인 풀이입니다. def solution(arr1, arr2): answer = [] for i in range(len(arr1)): answer.append([]) for j in range(len(arr1[i])): answer[i].append(arr1[i][j] + arr2[i][j]) return answer 리스트 컴프리헨션을 사용해서 줄일 수도 있습니다만 점점 가독성이 안 좋아집니다. 리스트 컴프리헨션을 2중으로 쓰는 것은 좋지 않습니다. def solution(arr1, arr2): answer = [] for i in range(len(arr1)): answer.append([..
-
19. 문자열 내림차순으로 배치하기코딩 테스트/Level 1 2019. 10. 17. 23:01
https://programmers.co.kr/learn/courses/30/lessons/12917 파이썬 간단하게 내장함수(BIF)들을 이용해서 풀었습니다. def solution(s): return ''.join(sorted(s, reverse=True)) 파이썬을 시작했을 때 작성한 코드입니다. ㅜㅜ def solution(s): temp_list = [] for letter in s: temp_list.append(letter) temp_list.sort(reverse=True) answer = '' for each in temp_list: answer += each return answer def solution(s): temp_list = list(s) # list() 함수로 문자열을 바로 ..
-
18. 모의고사코딩 테스트/Level 1 2019. 10. 16. 03:18
https://programmers.co.kr/learn/courses/30/lessons/42840 파이썬 def solution(answers): a1 = (1, 2, 3, 4, 5) # 리스트보다 튜플이 더 좋다. 큰 의미는 없지만 a2 = (2, 1, 2, 3, 2, 4, 2, 5) a3 = (3, 3, 1, 1, 2, 2, 4, 4, 5, 5) scores = [0, 0, 0] for i, v in enumerate(answers): if v == a1[i % 5]: scores[0] += 1 if v == a2[i % 8]: scores[1] += 1 if v == a3[i % 10]: scores[2] += 1 mx = max(scores) return [i + 1 for i in range..
-
17. 같은 숫자는 싫어코딩 테스트/Level 1 2019. 10. 15. 23:07
https://programmers.co.kr/learn/courses/30/lessons/12906 파이썬 기본적인 풀이입니다. def solution(arr): answer = [] for i in range(len(arr) - 1): if arr[i] != arr[i+1]: answer.append(arr[i]) answer.append(arr[-1]) return answer 테스트 1 〉통과 (107.83ms, 997MB) 테스트 2 〉통과 (107.53ms, 996MB) 테스트 3 〉통과 (108.24ms, 997MB) 테스트 4 〉통과 (107.57ms, 998MB) 리스트 컴프리헨션으로 줄여 쓸 수 있습니다. 나쁘진 않은 것 같습니다. def solution(arr): answer = [a..