-
1235. [Python]학생 번호Python_알고리즘/Silver IV 2023. 4. 1. 22:59
1. 문제
2. 접근 방법
- 시간 제한: 2초
- 메모리 제한: 128MB
- 문자열
- 구현
3. 파이썬 코드
import sys input = sys.stdin.readline N = int(input()) num_list = [] for _ in range(N): num_list.append(input().strip()) # 문자의 길이를 받아올 변수 생성 => 몇자리 수까지 존재하는지 확인 total_length = len(num_list[0]) # 문자열 슬라이싱을 위해 1부터 맨마지막숫자까지 for i in range(1,total_length+1): # 체크해줄 변수생성 flag = 0 # 딕셔너리 생성하여 매 딕셔너리마다 값 체크 ans_list = {} for j in num_list: # 숫자 리스트의 뒷부분부터 슬라이싱 시작하며 딕셔너리에 존재여부 확인 if j[total_length-i:] in ans_list: ans_list[j[total_length-i:]] += 1 else: ans_list[j[total_length-i:]] = 1 # 딕셔너리 value 값중 v가 1보다 큰 경우 flag 체크 변수에 1을 넣어줌 for v in ans_list.values(): if v > 1: flag = 1 break # flag 가 2이상인 경우 같은 값이 한개라도 존재하는 것이므로 그 외의 경우를 체크 if flag != 1: print(i) break
4. 문제를 풀고난 후 생각
- 일단 N의 갯수만큼 인풋값이 들어오기 때문에 리스트에 그 값들을 모두 넣어준다.
- 조건에서 모든 문자의 길이는 동일하다 하였으므로 한개의 길이를 체크하는 변수를 만들어 길이를 체크해준다.
- 이 체크한 값을 바탕으로 뒷부분부터 문자열을 슬라이싱해 가며 딕셔너리를 활용하여 모든 문자가 다른지 같은 문자가 있는지를 확인하여 flag 라는 변수에 값을 넣어줌으로써 확인한다.
- 이 문제는 N이 1000까지 범위고 문자열 길이가 100 까지 이기때문에 반복문을 여러번 사용해도 시간초과가 나거나 하지 않았던 것 같다.
5. 문제를 푸는데 도움이 되는 지식
- 문자열 슬라이싱
'Python_알고리즘 > Silver IV' 카테고리의 다른 글
1755. [Python]숫자놀이 (0) 2023.04.11 1120. [Python]문자열 (0) 2023.04.09 2578. [Python]빙고 (0) 2023.02.05 10610. [Python]30 (0) 2023.01.31 1789. [Python]수들의 합 (0) 2023.01.30