현제의 현재이야기

[백준/python] 2002 - 추월 본문

algorithm

[백준/python] 2002 - 추월

현재의 현제 2022. 7. 6. 14:25

n = int(input())

num_second = [0 for _ in range(n)]
result = 0

first = [
    input()
    for _ in range(n)
]

second = [
    input()
    for _ in range(n)
]

for i in range(n):
    for j in range(n):
        if second[i] == first[j]:
            num_second[i] = j + 1
            
for i in range(n):
    for j in range(i + 1, n):
            if num_second[i] > num_second[j]:
                result += 1
                break
print(result)

| 알고리즘

  1. 만약 입력이 5이면 5개씩 두 개의 리스트에 입력을 받는다
  2. 만약 second의 i번째 요소와 first 리스트의 j번째 요소가 같다면 num_Second 리스트 i번째의 숫자가 j + 1로 바꾼다.
  • for 루프 첫번째에 만약 first [a. b. c. d]이고 second가 [d, a, b, c]이면 num_second 는 second 0번째 d와 first 3번째 d와 같음으로 [4, 0, 0, 0] 이된다.

그렇게 for 루프를 돌고나면 [4, 1, 2, 3] 이렇게 나오는데 해당 인덱스의 숫자보다 뒤에 더 작은 것이 있다면 추월한 것임으로 result += 1해주고 break. >> 계속 for문이 진행되면 result += 1이 계속 되기 때문.

지금 보면 상당히 별거 없는데 괜히 이중 for문 쓰기 싫어서 어렵게 접근했다가 계속 답이 안나와서 애먹었던 문제. 그냥 입력 값 작을 때는 과감하게 쓰자.

Comments