def solution(answers):
student = {1:[1,2,3,4,5], 2:[2,1,2,3,2,4,2,5], 3:[3,3,1,1,2,2,4,4,5,5]}
score = {1:0, 2:0, 3:0}
for idx, answer in enumerate(answers):
for key, value in student.items():
if answer == value[idx % len(value)]:
score[key] += 1
highest = max(score.values())
result = [key for key, value in score.items() if value == highest]
return result
학생들이 찍는 순서를 딕셔너리에 넣고,
문제와 학생을 하나씩 for if문을 이용해서 비교한다. 맞으면 점수를 올리고 max 값을 출력한다.
enumerate는 인덱스와 값을 모두 for 문에서 사용할 수 있고
파이썬에서는 for문을 사용할 때 변수를 여러개 지정할 수 있다. for key value in student.items() 처럼 이는 딕셔너리의 키 값과 밸류 값을 모두 포문으로 돌릴때 짱짱 유용하다. 만약 student가 딕셔너리가 아닌 리스트라면, for key value in zip (student1, student2) 처럼 zip()함수를 사용하면 여러 변수를 쓸 수 있습니다.
from itertools import permutations
def solution(numbers):
number = list(numbers)
perms = []
answer = 0
for i in range(1, len(number)+1):
for perm in permutations(number, i):
perms.append(''.join(perm))
perms = list(set(perms))
for num in perms:
if num[0] != '0' and num != '1':
if prime_number(num) == True:
answer += 1
return answer
def prime_number(number):
num = int(number)
for f in range(2, int(num**0.5)+1):
if num % f == 0:
return False
return True
소수 찾는 부분을 좀 더 간단하게 할 수 있을 거 같긴한데..
아무튼 소수를 판별하는 prime_number의 리턴 값이 True이면 answer의 값을 증가시키는 방법으로 문제를 풀었습니다.
def solution(brown, yellow):
hap = brown + yellow
lis = []
for i in range(3, hap):
if hap % i == 0:
if i > hap//i:
break
lis.append([hap//i,i])
answer = [li for li in lis if (li[0]-2)*(li[1]-2) == yellow]
return answer[0]
이렇게 풀다보면 자신감이 쌓여서 코딩테스트 잘 풀것 만 같은데
막상 코딩테스트를 볼 때면 평소엔 잘 생각나던 함수도 방법도 생각이 안나더라는... 그리고 아이티 회사들의 코딩테스트 네이버, 카카오는 고득점 키트보다 훨 손이 많이 가는 문제가 나온다.