https://www.acmicpc.net/problem/2947
문제 분석
분류
구현, 시뮬레이션
문제 설명
동혁이는 나무 조각을 5개 가지고 있다. 나무 조각에는 1부터 5까지 숫자 중 하나가 쓰여져 있다. 또, 모든 숫자는 다섯 조각 중 하나에만 쓰여 있다.
동혁이는 나무 조각을 다음과 같은 과정을 거쳐서 1, 2, 3, 4, 5 순서로 만들려고 한다.
- 첫 번째 조각의 수가 두 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 두 번째 조각의 수가 세 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 세 번째 조각의 수가 네 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 네 번째 조각의 수가 다섯 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 만약 순서가 1, 2, 3, 4, 5 순서가 아니라면 1 단계로 다시 간다.
처음 조각의 순서가 주어졌을 때, 위치를 바꿀 때 마다 조각의 순서를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다. 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다.
출력
두 조각의 순서가 바뀔때 마다 조각의 순서를 출력한다.
입출력 예제)
소스코드
s=list(map(int,input().split()))
while 1:
for i in range(4):
if s[i]>s[i+1]:
s[i], s[i+1] = s[i+1], s[i]
print(" ".join(map(str,s)))
if s == [1, 2, 3, 4, 5]:
break
문제풀이
map()과 list()를 이용하여 list형으로 입력 받는다.
i번째 항이 i+1번째 항보다 클 때, 항을 교환하기 위해 s[i], s[i+1] = s[i+1], s[i] 를 넣어 구현하였다.
본래는 임시로 항을 저장하기 위한 임시 변수를 따로 선언하였지만 위 명령어처럼 임시 변수를 따로 선언하지 않아도 서로 교환이 된다는 것을 알게 되었다.
'Koala - 11기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python] 12719번: 비밀번호 찾기 (0) | 2023.07.23 |
---|---|
[백준/Python] 7510번: 고급 수학 (0) | 2023.07.23 |
[백준/c++] 14425번 문자열 집합 (0) | 2023.07.23 |
[백준/Python 3] 2511번 : 카드놀이 (0) | 2023.07.23 |
[백준/python3] 11068번: 회문인 수 (0) | 2023.07.22 |