-
1706. [Python]크로스 워드Python_알고리즘/Silver II 2024. 1. 14. 00:56
1. 문제
https://www.acmicpc.net/problem/1706
1706번: 크로스워드
동혁이는 크로스워드 퍼즐을 좋아한다. R×C 크기의 크로스워드 퍼즐을 생각해 보자. 이 퍼즐은 R×C 크기의 표로 이루어지는데, 퍼즐을 다 풀면 금지된 칸을 제외하고는 각 칸에 알파벳이 하나씩
www.acmicpc.net
2. 접근 방법
- 시간 제한: 2초
- 메모리 제한: 128MB
- 정렬
- 문자열 파싱
3. 파이썬 코드
R, C = map(int,input().split()) matrix = [ input() for _ in range(R) ] word_list = [] # 가로 방향으로 반복하며 # 을 제외한 문자들을 정답 리스트에 저장 for i in range(R): word = "" for j in range(C): if matrix[i][j] == "#": # 막힌 부분에서 빈문자가 아니고 문자 길이가 1이 아닌 경우 추가 후 word 값 초기화 if word != "": if len(word) > 1: word_list.append(word) word = "" else: word += matrix[i][j] if word != "" and len(word) > 1: word_list.append(word) # 세로 방향으로 반복하며 # 을 제외한 문자들을 리스트에 저장 for i in range(C): word = "" for j in range(R): if matrix[j][i] == "#": if word != "": if len(word) > 1: word_list.append(word) word = "" else: word += matrix[j][i] if word != "" and len(word) > 1: word_list.append(word) word_list.sort() if word_list: print(word_list[0])
4. 문제를 풀고난 후 생각
- 문자열 파싱문제여서 다른 메서드를 사용하여 푼 것이 아닌 순수하게 탐색을 해가며 값을 구했다.
- "a", "b", "e" 이런 식의 한 글자들만 들어오는 경우는 없는 것 같았고 "###" 이런 식으로 구성된 입력값에서 문자가 없는 경우 출력이 되면 안되는 것 같다.
- 문제를 푼 사람의 수가 적어서 반례가 많이 존재하지 않아서 푸는데 실수가 좀 많았고, 탐색하면서 값을 찾는 방법 외에는 생각이 나지 않았다.
5. 문제를 푸는데 도움이 되는 지식
- 빙고의 조건 어떻게 구현할지
'Python_알고리즘 > Silver II' 카테고리의 다른 글
1654. [Python]랜선 자르기 (0) 2025.01.15 1569. [Python]정사각형으로 가리기 (0) 2024.02.18 1138. [Python]한 줄로 서기 (1) 2023.12.05 15663. [Python]N과 M(9) (1) 2023.10.03 17086. [Python]아기 상어2 (0) 2023.09.26