일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- it 뉴스
- 백준
- 카카오
- IT 동향
- 우테코
- 싸피
- 프로그래머스
- 네트워크 관리사 2급
- 백준위
- 네트워크 관리사 2급 실기
- SSAFYcial
- html
- 싸피셜
- IT 트렌드
- python
- 신문스크랩
- 신문 스크랩
- 코딩테스트
- KT
- SSAFY
- 인앱결제
- 코테
- Java
- 네트워크 관리사
- SSAFY 7기
- java 객체지향 프로그래밍
- 구글
- 리얼클래스
- it 이슈
- 코딩테스트 연습
- Today
- Total
개발자일걸요..?
4084번 Viva la Diferencia 본문
링크 : https://www.acmicpc.net/problem/4084
4084번: Viva la Diferencia
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, a, b, c, d가 순서대로 주어진다. 입력의 마지막 줄에는 0이 4개 주어진다. (1 ≤ a,b,c,d ≤ 2,000,000,000)
www.acmicpc.net
문제
네 개의 양의 정수 a, b, c, d가 있을 때, 아래와 같이 차이를 계산할 수 있다.
|a-b| |b-c| |c-d| |d-a|
이렇게 나온 네 개의 수를 이용해서 다시 또 차이를 계산할 수 있다. 이 작업을 모든 네 개의 정수가 같아질 때까지 반복한다.
예를 들어, 1, 3, 5, 9로 시작했을 때를 생각해보자.
1 3 5 9
2 2 4 8 (1)
0 2 4 6 (2)
2 2 2 6 (3)
0 0 4 4 (4)
0 4 0 4 (5)
4 4 4 4 (6)
위의 경우에서 수열은 6번 만에 수렴한다. a, b, c, d가 주어졌을 때, 이 수열이 얼마나 빨리 수렴하는지 구하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, a, b, c, d가 순서대로 주어진다. 입력의 마지막 줄에는 0이 4개 주어진다. (1 ≤ a,b,c,d ≤ 2,000,000,000)
출력
각 테스트 케이스에 대해서, 수열이 몇 번 만에 수렴하는지 출력한다.
예제 입력 1
1 3 5 9
4 3 2 1
1 1 1 1
0 0 0 0
예제 출력 1
6 4 0
시뮬레이션 알고리즘 이용
직접 a-b, b-c, c-d, d-a의 절댓값을 구하고 비교.
입력 예시를 통해 확인
a | b | c | d | |
0번 | 1 | 3 | 5 | 9 |
1번 | 2 | 2 | 4 | 8 |
2번 | 0 | 2 | 4 | 6 |
3번 | 2 | 2 | 2 | 6 |
4번 | 0 | 0 | 4 | 4 |
5번 | 0 | 4 | 0 | 4 |
6번 | 4 | 4 | 4 | 4 |
작성한 코드
a,b,c,d = list(map(int,input().split(' ')))
while not(a==0 and b==0 and c==0 and d==0):
count = 0
while True:
if a==b and b==c and c==d:
break
a,b,c,d = abs(a-b),abs(b-c),abs(c-d),abs(d-a)
count+=1
print(count)
a, b, c, d = list(map(int, input().split(' ')))
'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글
14950번 3n+1수열 (0) | 2021.11.04 |
---|---|
13698번 Hawk eyes (0) | 2021.11.04 |
10812번 바구니 순서 바꾸기 (0) | 2021.11.04 |
18870번 좌표 압축 (0) | 2021.04.06 |
11444번 피보나치 수 6 (0) | 2021.04.03 |