사실 졸작 심사가 끝나고 힘이 쭈욱 빠져서 뽀로로였다. 노는게 제일 좋아.
하지만 이러다가 정말 큰일나겠다 싶어서 코테 준비..!
4학년을 올라오고 몇 번 코딩테스트를 경험한 적이 있는데 전혀 풀지 못했다. 그래서 결심했다!
정수 배열이 주어질 때 3개의 조합을 찾아서 합이 0이되는 것을 찾아라.
combinations 라이브러리를 가져와서 조합을 찾아서 해결했다.
for문을 여러 개 써서 찾아내는 방법도 있지만 라이브러리를 알고있다면 코드가 간단명료하다.
def solution(number):
cnt=0
from itertools import combinations
for i in combinations(number,3):
if sum(i)==0:
cnt+=1
return cnt
2.크기가 작은 부분문자열
https://school.programmers.co.kr/learn/courses/30/lessons/147355
긴 문자열이 있고 작은 문자열이 있을 때 작은 크기로 잘라서 크기 비교 후 카운트.
def solution(t, p):
answer = 0
n = len(p)
for i in range(len(t)-n+1):
parts = t[i:i+n]
if parts <= p:
answer += 1
return answer
3.푸드 파이트 대회
https://school.programmers.co.kr/learn/courses/30/lessons/134240
푸드 파이트 대회가 열린다. 3가지 음식을 칼로리가 적은 순서로 먹는다. 가운데에는 물.
문자열을 만들되 오른쪽 선수 음식은 왼쪽 선수 음식의 역순, 가운데는 물이라는 것만 캐치!
def solution(food):
temp=''
for i in range(1,len(food)):
temp+=str(i)*(food[i]//2)
return temp+'0'+temp[::-1]
4.추억 점수
https://school.programmers.co.kr/learn/courses/30/lessons/176963
친구들 이름, 추억 점수, 여러 사진들 속 이름이 주어질 때 친구들의 추억 점수를 통해 사진 속 추억점수를 계산한다. 첫번 째 코드는 내 것. 두 번째 코드는 너무 신기해서 가져와봤다. 정말 같은 결과를 내지만 알고리즘은 정말 간단하다. 보고 배우자:)
def solution(name, yearning, photo):
answer = []
for peoples in photo:
result = 0
for people in peoples:
if people in name:
result += yearning[name.index(people)]
answer.append(result)
return answer
def solution(name, yearning, photo):
return [sum(yearning[name.index(j)] for j in i if j in name) for i in photo]
5.달리기 경주
https://school.programmers.co.kr/learn/courses/30/lessons/178871
달리경주를 한다. 해설진이 선수의 이름을 부르면 추월한 것이다. 이에 따라 순위를 출력하라. 입력으로는 현재 등수 순서대로 담긴 배열, 해설진이 경기 중 부른 이름을 담은 배열이다.
def solution(players, callings):
pla_dic = {key: i for i, key in enumerate(players)}
for p in callings:
c = pla_dic[p]
pla_dic[p] -= 1
pla_dic[players[c-1]] += 1
players[c-1], players[c] = players[c], players[c-1]
return players