https://www.acmicpc.net/problem/1551
문제 분석
분류
수학, 구현, 문자열, 시뮬레이션, 파싱
문제 설명
크기가 N인 수열 A가 주어졌을 때, 세준이는 인접한 두 원소의 차이를 이용해서 크기가 N-1인 수열 B를 만들 수 있다.
예를 들어, A = {5, 6, 3, 9, -1} 이었을 때, B = {6-5, 3-6, 9-3, -1-9} = {1, -3, 6, -10}이 된다. 즉, B[i] = A[i+1]-A[i]가 된다.
수열 A가 주어졌을 때, 세준이가 위의 방법을 K번 했을 때 나오는 수열을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 수열의 크기 N과 K가 주어진다. N은 20보다 작거나 같은 자연수이고, K는 0보다 크거나 같고, N-1보다 작거나 같은 정수이다. 둘째 줄에는 수열이 ‘,’로 구분되어 주어진다. 수열을 이루고 있는 수는 절댓값이 100보다 작거나 같은 정수이다.
출력
첫째 줄에 K번 변형한 수열을 ‘,’로 구분하여 출력한다.
입출력 예제)
소스코드
n,k=map(int,input().split())
arr=list(map(int,input().split(',')))
for i in range(0,k):
m=len(arr)
for j in range(0,m-1):
arr[j]=arr[j+1]-arr[j]
arr.pop()
print(",".join(map(str,arr)))
문제풀이
','를 통해 구분하여 받는 입력을 map()과 list()를 이용하여 list형으로 입력 받는다.
문제에서 B[i] = A[i+1]-A[i]를 구현하기 위하여 A에 해당하는 list인 arr의 길이보다 1을 더 작게 한 횟수만큼 for문을 반복한다.
이후에는 list의 맨 끝 값이 불필요하므로 pop()을 통하여 이를 제거하고 결과를 출력한다.
'Koala - 11기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/C++] 2839번: 설탕 배달 (0) | 2023.07.16 |
---|---|
[백준/Python3] 1330번 : 두 수 비교하기 (0) | 2023.07.16 |
[백준/Python3] 2839번: 설탕 배달 (0) | 2023.07.15 |
[백준/python] 1267번: 핸드폰 요금 (0) | 2023.07.15 |
[백준/Python] 4458번: 첫 글자를 대문자로 (0) | 2023.07.15 |