알고리즘 풀이
[알고리즘] 백준 | 공 바꾸기, 과제 안 내신 분..?
째깍단
2023. 9. 6. 09:02
공 바꾸기
답:
더보기
from sys import stdin
input = stdin.readline
N, M = map(int, input().split())
bucket = [i for i in range(1, N+1)]
for i in range(M):
first, second = map(int, input().split())
first, second = first -1, second -1
bucket[first], bucket[second] = bucket[second], bucket[first]
print(*bucket)
문제 분석 및 해석
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호
바구니에 공 1개씩, 바구니에 적혀있는 번호와 같은 번호
공을 바꿀 바구니 2개를 선택하고, 두 바구니에 들어있는 공을 서로 M번 교환
입력
5 4
1 2
3 4
1 4
2 2
출력
3 1 4 2 5
리뷰.
index를 맞추기 위해 bucket에 0번인덱스를 넣고, 출력시 [1:] 범위연산자를 사용했었지만
어떤 입력에서는 런타임 에러가 발생하는 듯 하다.
리팩터링 과정에서 first와 second에서 -1을 넣도록 변경했다
과제 안내신 분..?
답:
더보기
from sys import stdin
input = stdin.readline
# student_num = [i for i in range(1, 31)]
student_num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
answer = student_num[:]
for _ in range(28):
student = int(input())
answer.remove(student)
answer.sort()
print(*answer, sep="\n")
문제 분석 및 해석
X대학 M교수님은 프로그래밍 수업을 맡고 있다.
학생이 30명, 1번부터 30번까지 출석번호
28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하기
입력은 총 28줄
출력은 2명의 번호, 작은 번호부터 각각 줄에 출력
리뷰.
list로 만들고 unpacking, sep으로 각각 줄에 출력하겠다고 생각했다
작은 번호순으로 출력이 있으므로 sort로 한번 정렬 필요.
range범위를 잘 생각하면서 풀면 쉽다!