현제의 현재이야기
[백준/python] 2002 - 추월 본문
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)
| 알고리즘
- 만약 입력이 5이면 5개씩 두 개의 리스트에 입력을 받는다
- 만약 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문 쓰기 싫어서 어렵게 접근했다가 계속 답이 안나와서 애먹었던 문제. 그냥 입력 값 작을 때는 과감하게 쓰자.
'algorithm' 카테고리의 다른 글
[백준/python] 13414 - 수강신청 (0) | 2022.07.16 |
---|---|
[백준/python] 16206 - 롤케이크 (0) | 2022.07.07 |
[백준/python] 18115 - 카드놓기 (0) | 2022.07.05 |
[백준/python] 13022 - 늑대와 올바른 단어 (0) | 2022.06.29 |
[백준/python] 12789 - 도키도키 간식드리미 (0) | 2022.06.29 |
Comments