오늘도 하는 코테 준비.. 기억에 남는 다섯문제만 기록해보겠다!
- 로또의 최고 순위와 최저 순위
https://school.programmers.co.kr/learn/courses/30/lessons/77484
동생이 로또에 낙서를 하여 숫자가 잘 보이지않는다. 그래서 0으로 표시해두고 로또 최고 순위와 최저 순위를 예측해보자. 문제 해결 방식은 먼저 0을 세는 것이다. 그리고 로또 번호와 당첨번호를 비교하여 카운트. 등수를 딕셔너리 형태로 만들어놓고 매치시킬 것!
def solution(lottos, win_nums):
answer = []
cnt=0
zero_cnt=lottos.count(0)
for i in lottos:
if i in win_nums:
cnt+=1
print(cnt)
max=zero_cnt+cnt
rank = {6:1,5:2,4:3,3:4,2:5,1:6,0:6} # 순위와 당첨 내용 딕셔너리
answer = [rank[max],rank[cnt]]
return answer
2.모의고사
https://school.programmers.co.kr/learn/courses/30/lessons/42840
세 명의 친구는 모두 수포자이다. 수학 시험에 앞서 어떻게 찍을 지 패턴을 만들어두었다. 가장 높은 점수를 받는 사람은 누구인가. 문제 해결 방식은 각 학생별로 패턴을 정의하고 답안을 순회하며 채점!
def solution(answers):
answer = []
score = [0,0,0]
student1 = [1,2,3,4,5]
student2 = [2,1,2,3,2,4,2,5]
student3 = [3,3,1,1,2,2,4,4,5,5]
for i in range(len(answers)) :
if answers[i] == student1[i%5] :
score[0] += 1
if answers[i] == student2[i%8] :
score[1] += 1
if answers[i] == student3[i%10] :
score[2] += 1
for idx, num in enumerate(score) :
if num == max(score) :
answer.append(idx +1)
return answer
3.소수 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/12977
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 수를 구하라! 이런 문제는 바로 콤비네이션을 떠올려야한다. 그러면 간단하게 해결 가능!
from itertools import combinations
def solution(nums):
answer = 0
for i in combinations(nums, 3):
s = sum(i)
chk = True
for j in range(2, int(s ** 0.5) + 1):
if s % j == 0:
chk = False
break
if chk is True:
answer += 1
return answer
4.다트게임
https://school.programmers.co.kr/learn/courses/30/lessons/17682
2018 카카오 블라인드 채용 문제다. 완전 탐색 문제로 점수를 계산하는 로직을 짜야한다. 각 케이스별로 점수 계산을 달리할 것!
def solution(dartResult):
n = ''
score = []
for i in dartResult:
if i.isnumeric():
n += i
elif i == 'S':
n = int(n)**1
score.append(n)
n = ''
elif i == 'D':
n = int(n)**2
score.append(n)
n = ''
elif i == 'T':
n = int(n)**3
score.append(n)
n = ''
elif i == '*':
if len(score) > 1:
score[-2] = score[-2] * 2
score[-1] = score[-1] * 2
else:
score[-1] = score[-1] * 2
elif i == '#':
score[-1] = score[-1] * -1
return sum(score)
5.2016년
https://school.programmers.co.kr/learn/courses/30/lessons/12901
날짜가 주어질 때 요일을 맞출 것!배열로 만들어두어 매칭!
def solution(a, b):
answer = 0
days = ['FRI','SAT','SUN','MON','TUE','WED','THU']
months = [31, 29, 31, 30, 31, 30,31, 31, 30, 31, 30, 31]
for i in range(a-1):
answer += months[i]
answer += b-1
answer = answer%7
return days[answer]