728x90
👩🏻💻
https://www.acmicpc.net/problem/11728
11728번: 배열 합치기
첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거
www.acmicpc.net
내 풀이 (정렬 ver)
N, M = map(int, input().split())
arr = []
for _ in range(2):
arr += list(map(int, input().split()))
print(*sorted(arr))
초간단 풀이!
A와 B를 입력받아 정답 배열 arr에 추가해 준 뒤, arr를 정렬한다.
내 풀이 (투포인터 ver)
N, M = map(int, input().split())
A = sorted(list(map(int, input().split())))
B = sorted(list(map(int, input().split())))
a = 0
b = 0
ans = []
while a < N and b < M:
if A[a] <= B[b]:
ans.append(A[a])
a += 1
else:
ans.append(B[b])
b += 1
if a == N:
ans += B[b:]
else:
ans += A[a:]
print(*ans)
투포인터로도 풀어봤다.
a는 배열 A의 인덱스, b는 배열 B의 인덱스를 나타내는 변수다.
각 인덱스가 모두 범위 내에 있을 때에만 반복문을 실행한다.
A[a]가 B[b]보다 작거나 같으면 정답 배열 arr에 A[a]를 추가하고, 다음 인덱스로 이동한다. (a += 1)
A[a]가 B[b]보다 크면 정답 배열 arr에 B[b]를 추가하고, 다음 인덱스로 이동한다. (b += 1)
반복문이 끝나고 나서 a == N이라면, A 배열의 모든 값을 검사한 경우이므로, B 배열의 남은 값을 arr에 추가한다.
반대로 B 배열의 모든 값을 검사하여 반복문이 종료된 경우라면, A 배열의 남은 값을 arr에 추가한다.
'코딩테스트' 카테고리의 다른 글
[백준][Python] 2885 초콜릿 식사 (0) | 2024.03.13 |
---|---|
[백준][Python] 2589 보물섬 (0) | 2024.03.12 |
[백준][Python] 2018 수들의 합 5 (0) | 2024.03.11 |
[백준][Python] 2422 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 (0) | 2024.03.11 |
[백준][Python] 1251 단어 나누기 (0) | 2024.03.11 |