전체 글
-
26. 소수 찾기코딩 테스트/Level 1 2019. 10. 24. 23:00
https://programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 제한 시간 안에 범위 안 소수를 모두 찾으려면 에라토스테네스의 체(Sieve of Eratosthenes)를 사용하는 것이 좋습니다. 파이썬 def solution(n): prime = [False, False] + [True] * (n-1) count = 0 for i in range(2,n+1): if prime[i]: count +..
-
25. 정수 제곱근 판별코딩 테스트/Level 1 2019. 10. 23. 23:20
https://programmers.co.kr/learn/courses/30/lessons/12934 파이썬 def solution(n): x = n**0.5 return -1 if (x % 1) else (x+1)**2 자바스크립트 function solution(n) { let num = Math.sqrt(n) return (num == parseInt(num)) ? (num + 1) ** 2 : -1 } 자바 class Solution { public long solution(long n) { var a = (long) Math.sqrt(n); return (a * a == n) ? (a + 1) * (a + 1): -1; } } 고 import "math" func solution(n int64)..
-
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() 함수로 문자열을 바로 ..