알고리즘

[백준 1235] 학생 번호 - 파이썬

Codult 2024. 2. 23. 11:27
728x90

백준 1235 - 학생 번호


* 풀이 과정

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

2) 문자열을 자르는 기준이 되는 값(l) 설정한다. (l은 문자열의 가장 끝 인덱스부터 시작)

3) 반복문을 이용하여, 문자열 자르기[l:] 후, 자른 문자열끼리 비교.

  * 나는 자른 문자열을 비교할 때도, for문을 써서 복잡해졌는데, if __ in [ ] 를 활용하면, for문 없이 비교할 수 있다.

4) 같은 문자열이 있다면, break -> l++

5) 같은 문자열이 전혀 없다면, break -> 문자열 길이와 l의 차이를 출력한다.

 

N = int(input())
nums = []
for _ in range(N):
    nums.append(input())

length = len(nums[0])
result = 0

# l을 기준으로 자른 문자열 비교까지 for문으로 진행한 코드
# for l in range(length-1, -1, -1):
#     for i in range(N-1):
#         num_i = nums[i][l:]
#         for j in range(i+1, N):
#             num_j = nums[j][l:]
#             if num_i == num_j:
#                 result = length - l
#                 break
#     if result != length - l: break

# if __ in []: 을 이용하면, for문 2개로 가능.
for l in range(length-1, -1, -1):
    arr = []
    for num in nums:
        if num[l:] in arr: break
        else: arr.append(num[l:])
    if len(arr) == N:
        print(length - l)
        break
728x90