미소를뿌리는감자의 코딩
[백준 2024/02/22] 5052번 전화번호 목록 본문
728x90
https://www.acmicpc.net/problem/5052
1. 접근 방법
접두어인 경우가 없어야 한다는 점에 주목했다.
따라서 2개의 수를 비교할 때, 어떤 수가 큰 수인지 작은 수 인지 판단을 하였다.
이후 큰 수를 앞에서부터 작은 수의 크기만큼 slice를 한 후, slice된 큰 수 == 작은 수 인지 확인해 주었다.
이후 2중 for문을 이용해서, 2개의 수를 받아와 주었다.
이때, sort()를 먼저하고 2개의 수를 받아와 준다면, 뒤에 있는 수가 무조건 큰 수 임을 알 수 있다.
for i in range(cases):
for j in range(i+1, cases, 1):
위 코드에서는 nums[i] 가 작은 수, nums[j]가 큰 수 임을 알 수 있다. 물론, 둘의 length가 같을 수도 있다.
처음에는 sort()를 하지 않고, 2개의 수를 받아와서 각 경우마다 전화번호 크기를 비교해 줬었다. 하지만, 시간 초과가 나는 문제가 있었다.
이후, sort()를 한 후, 2개의 수 중 어떤 수가 더 큰 지 evaluate 하는 부분을 지워주니 맞힐 수 있었다.
2. 코드
def check_consistency(cases):
nums = []
for i in range(cases):
nums.append(input())
nums.sort() ## 이게 중요한 부분.
for i in range(cases):
for j in range(i+1, cases, 1):
if nums[j][:len(nums[i])] == nums[i]:
return 'NO'
return 'YES'
def main():
for _ in range(int(input())):
cases = int(input())
print(check_consistency(cases))
if __name__ == '__main__':
main()
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준 2024/02/23] 1946번 신입 사원 (0) | 2024.02.23 |
---|---|
[백준 2024/02/22] 1002번 터렛 - python ver. (0) | 2024.02.22 |
[백준 2024/02/22] 2108번 통계학 (0) | 2024.02.22 |
[백준 2024/02/22] 10814번 나이순 정렬 (0) | 2024.02.22 |
[백준 2024/02/22] 2751번 수 정렬하기 2 (0) | 2024.02.22 |