알고리즘 문제 풀이: 파이썬/BOJ

[BOJ_16113] 시그널

hueco 2023. 11. 23.

 

📌 문제 링크: https://www.acmicpc.net/problem/16113

 

16113번: 시그널

zxcvber는 외계인을 연구하는 과학자다. 그는 지난 10년간 우주에서 오는 시그널를 연구했지만, 아무런 성과가 없었다. 그러던 어느 날, 갑자기 우주에서 이상한 시그널이 오기 시작했다. zxcvber는

www.acmicpc.net

 

내 풀이(Success) :

 

문제가 재미있어서 특별히 이미지까지 첨부해서 해설했다!

 

🧐 Review:

 최근에 풀었던 문제 중에서 가장 재미있게 풀었던 문제이다. 문자열 문제이지만, 그 문자열을 어떻게 다루는지에 따라서 구현 방향이 달라지고 코드의 양도 꽤 차이나는 문제라고 생각한다. 문제를 풀고 나서 구글에서 파이썬으로 작성된 다른 풀이를 찾아봤지만 나랑 다르게 상당히 많은 반복되는 조건식으로 문제를 푸는 것을 확인했다. 그래서 더 나만의 아이디어로 문제를 해결했다는 생각에 뿌듯했다.

 

이 코드에 내가 알고 있는 파이썬의 지식들이 꽤 많이 녹아있어서 그동안의 문제 풀이를 통해 조금은 성장했다는 생각이 들게 하는 문제였다.

 

🚩 Idea:

1. 문자열을 입력 받는다,

2. 문자열의 길이를 5로 나눈 몫을 구한다.

3. 해당 수만큼 입력으로 받은 문자열을 잘라 2차원 배열에 담는다. 이때, 계산 편의성을 위해 '.' 문자를 추가로 리스트에 더해준다.

4. 2차원 배열을 열칼럼 순으로 읽기 위해 뒤집는다.

5. 반복문을 통해 2차원 배열을 읽으며 숫자 사이의 1열의 공백이 아닌 경우 해당 문자열을 리스트(check)에 담는다.

6. 공백 1열이 나오고, check에 원소가 있다면 미리 정의해 둔 numbers 배열에서 해당 문자열이 뜻하는 숫자를 찾는다.

 6-1. 배열에서 일치하는 값을 찾으면, 해당 인덱스 값을 문자열로 반환해 answer에 더하고, check 배열을 초기화 해준다.

7. 정답 answer를 출력한다.

 

'알고리즘 문제 풀이: 파이썬 > BOJ' 카테고리의 다른 글

[BOJ_9242] 폭탄 해체  (0) 2023.12.29
[BOJ_19948] 음유시인 영재  (0) 2023.12.19
[BOJ_16955] 오목, 이길 수 있을까?  (0) 2023.11.23
[BOJ_13335] 트럭  (0) 2023.11.19
[BOJ_20006] 랭킹전 대기열  (0) 2023.11.18

댓글