코딩 테스트/Level 0
-
합성수 찾기코딩 테스트/Level 0 2023. 1. 9. 06:51
https://school.programmers.co.kr/learn/courses/30/lessons/120846 파이썬 에라토스테네스의 체 def solution(n): primes = [True for _ in range(n + 1)] primes[0] = primes[1] = False for num in range(2, n): if primes[num]: for each in range(num * 2, n + 1, num): primes[each] = False return n - sum(primes) - 1 '에라토스테네스의 체'를 쓰지 않고... def solution(n): answer = 0 for i in range(1, n + 1): counter = 0 for j in range(1..
-
다음에 올 숫자코딩 테스트/Level 0 2022. 12. 16. 23:04
https://school.programmers.co.kr/learn/courses/30/lessons/120924 파이썬 def solution(c): if (temp := c[1] - c[0]) == c[2] - c[1]: # 등차 수열이라면 return c[-1] + temp return (c[1] / c[0]) * c[-1] 코드 자체는 어렵지 않은데 등차수열과 등비수열의 단어가 익숙하지 않아서 오답이 좀 있었던 것 같다. 아직 등차와 등비수열을 배우지 않은 학생들도 있을 것 같고.. 파이썬에서는 a[-1]로 a 리스트의 마지막 원소를 가져올 수 있다. 다른 언어에서는 보통 a[len(a) - 1] 로 접근하는데... 파이썬에서는 len(a)를 생략할 수 있다. 이런 느낌이 파이써닉. 등차수열은 ..
-
저주의 숫자 3코딩 테스트/Level 0 2022. 11. 8. 17:27
https://school.programmers.co.kr/learn/courses/30/lessons/120871 파이썬 def solution(n): answer = 0 for _ in range(n): answer += 1 while answer % 3 == 0 or '3' in str(answer): answer += 1 return answer 코틀린 class Solution { fun solution(n: Int): Int { var answer = 0 (0 until n).forEach { _ -> answer++ while (answer % 3 == 0 || '3' in answer.toString()) answer++ } return answer } }
-
최빈값 구하기코딩 테스트/Level 0 2022. 11. 8. 17:05
https://school.programmers.co.kr/learn/courses/30/lessons/120812 파이썬 3가지 방법으로 풀어보겠습니다. 1. 리스트 기본적인 스타일로 코드를 작성한다면.. (max함수를 한 번 쓰긴 했지만) def solution(array): times_list = [0] * (max(array) + 1) # 리스트의 주소는 num, 원소는 num의 반복 횟수 for num in array: times_list[num] += 1 # num이 나올 때 마다 1 증가 mode = -1 # 최빈값은 영어로 mode mode_times = 0 # 최빈값의 횟수 second_times = 0 # 최빈값이 1회 이상 나올 때, 그 횟수를 기록할 변수 for index, time..
-
OX퀴즈코딩 테스트/Level 0 2022. 11. 8. 16:44
https://school.programmers.co.kr/learn/courses/30/lessons/120907 파이썬 문자열의 split 메소드를 이용하자. q.split()은 q.split(' ')과 같다. 기능별로 함수를 분리했다. def test(q): temp = q.split() if temp[1] == '+': return int(temp[0]) + int(temp[2]) == int(temp[4]) else: return int(temp[0]) - int(temp[2]) == int(temp[4]) def solution(quiz): answer = [] for each in quiz: if test(each): answer.append('O') else: answer.append('X..
-
다항식 더하기코딩 테스트/Level 0 2022. 11. 8. 16:36
https://school.programmers.co.kr/learn/courses/30/lessons/120863 코딩테스트는 알고리듬 문제와 구현 문제로 나눌 수 있다, 레벨 0의 구현은 어렵지 않으므로 가독성에 신경 써서 깔끔하게 정리하면 된다. temp 리스트에 x항과 상수항을 각각 분리. 분리된 항의 계수의 합을 구함. 각각의 항을 텍스트로 변환 후 기호를 넣어 병합. 파이썬 def solution(polynomial): coefficients = [0, 0] # 계수들 terms = polynomial.split(' + ') for term in terms: if term[-1] == 'x': # 항의 마지막 글자가 x면 t = term[:-1] # 항의 마지막 글자를 제외한 부분 if t: ..
-
연속된 수의 합코딩 테스트/Level 0 2022. 11. 8. 16:24
https://school.programmers.co.kr/learn/courses/30/lessons/120923 파이썬 num이 홀수일 때, total // num이 가운데 숫자가 되니 쉽게 찾을 수 있고, num이 짝수일 때는 약간의 변형이 필요하다. def solution(num, total): a, b = divmod(total, num) temp = (num - 1) // 2 return [each for each in range(a - temp, a + temp + 1 + (0 if b == 0 else 1))] 수학적으로 접근하면 더 좋다. def solution(num, total): start = total // num - (num - 1) // 2 return [each for eac..
-
분수의 덧셈코딩 테스트/Level 0 2022. 11. 8. 15:52
https://school.programmers.co.kr/learn/courses/30/lessons/120808 파이썬 gcd (최대공약수) import math def solution(denum1, num1, denum2, num2): denum = denum1 * num2 + denum2 * num1 num = num1 * num2 gcd = math.gcd(denum, num) return denum // gcd, num // gcd 여러 결과들을 동시에 리턴할 때 파이썬은 tuple로 묶어서 전송한다. 프로그래머스의 API는 json을 이용해 답을 확인하기 때문에 튜플과 리스트를 구분하지 않는다. 위 코드도 통과되지만 정확하게 작성하는 것이 좋을 것 같다. fractions(분수) 라이브러리를..