[코드포스] Round #817 Div4 풀이

junah·2022년 8월 31일
0

알고리즘

목록 보기
5/8

A - Spell Check

A - 문제 설명

입력값이 Timur의 순열인지 확인하여 YES, NO로 출력한다.

A - 내 풀이

Timur를 통한 순열의 리스트를 만든 후 해당 리스트에 입력값이 있는지 판별한다.

소스 : github

A - 정해

if sored(s) == sorted("Timur"):
	print("YES")
else:
	print("NO")

입력값을 리스트로 만들어서 정렬한 후 해당 리스트가 Timur를 정렬한 값과 같은지 비교한다.

A - 후기

Div.4에 A번이기 때문에 순열을 직접 구하는 것을 하지 말고, 조금 더 그리디하게 짜려고 노력했어야 했는데 너무 어렵게 짠 것 같다.


B - Colourblindness

B - 문제 설명

주인공은 Green과 Blue를 구분하지 못한다. 따라서 길이가 같은 문자열 2개가 들어왔을 때 주인공이 봤을 때 두 문자열이 같은지 출력하시오.

B - 내 풀이

string1 = input().replace('G', 'B')
string2 = input().replace('G', 'B')

입력값에서 단순히 G를 B로 replace 해준 후에 비교해주었다.

소스 : github

B - 후기

A번에 비해서 B번이 쉬워서 A번을 너무 어렵게 풀었다는 것을 깨달았다...


C - Word Game

C - 문제 설명

3명의 사람이 각각 N개의 개수의 단어를 말한다. 해당 단어를 1명만 말했다면 그 사람은 3점, 2명만 말했다면 1점, 3명 모두가 말했다면 0점을 얻는다. 이때 3사람의 점수를 출력하시오.

C - 내 풀이

Python Dict에 단어를 키로, 유저를 값으로 넣어준다. 마지막에 해당 값을 확인한 후에 유저마다 점수를 부여한다.

소스 : github

D - Line

D - 문제 설명

N명의 사람을이 줄를 서있다. 어떤 사람은 오른쪽을 어떤 사람은 왼쪽을 보고 있다. 이때 각 유저는 값을 가진다. 이 값은 바라보는 방향에 있는 유저의 수이다. 각 줄은 값을 가지는데 이 값은 줄에 있는 각 유저의 값의 합이다.
이때 한 사람의 바라보는 방향을 바꿀 기회가 주어진다. 가장 효율적으로 한명씩 방향을 바꿀 때 이 때 줄이 값을 출력한다.

D - 내 풀이

간단하게 각 줄의 사람들이 바라보는 방향의 인원수와 반대 방향의 인원수를 계산한다. 이때 바라보는 방향의 인원수가 반대 방향의 인원 수 보다 작으면 (방향을 바꾸면 줄의 값이 증가할 때) 이 증가하는 값을 따로 리스트를 만들어 저장한다. 만약 방향을 바꿨을 때 감소하면 0을 리스트에 넣어준다. 이 리스트를 내림차순으로 정렬한 후에 현재 줄의 값에 하나씩 더해서 출력해준다.

소스 : github


F - L-shapes

F - 문제 설명

L 모양의 블럭이 위 사진의 4가지 모양으로 존재할 수 있다. 이때 입력값에서 이 블럭끼리 붙어 있거나, 존재할 수 없는 모양으로 있는지 판별하시오.

F - 내 풀이

오른쪽 위부터 하나씩 판별할 때 모양이 단순히 아래 4가지 모양밖에 나오지 않는다.

■□ □■ ■■ ■■
■■ ■■ ■□ □■

따라서 위 4가지 모양을 하드코딩 해둔 후에 위 모양인지 판별하고, 추가로 붙어있는지 판별해주었다.

소스 : github

F - 후기

E번 문제는 어려워서 건너뛰고, 처음부터 짜다가 40분 정도 뻘짓하고, 20분 남았을 때 새로 짜서 2분 남았을 때 다시 제출 했는데 넘 짜맀했다... 단순 BFS 문제인줄 알았지만 은근히 구현이 어려웠던 문제이다.

profile
개발자를 꿈꾸는 사람

0개의 댓글