문제
https://www.acmicpc.net/problem/2548
2548번: 대표 자연수
첫째 줄에는 자연수의 개수 N이 입력된다. N은 1 이상 20,000 이하이다. 둘째 줄에는 N개의 자연수가 빈칸을 사이에 두고 입력되며, 이 수들은 모두 1 이상 10,000 이하이다.
www.acmicpc.net
Algorithm
주어진 모든 자연수들에 대하여 차이가 가장 작은 자연수를 대표자연수라고 하고, 이를 찾는 문제이다.
차이가 가장 작으려면 주어진 자연수들의 범위 내에서 대표자연수가 존재할 것이다.
주어진 자연수가 예제 처럼 4 3 2 2 9 10이라면 대표 자연수의 범위는 2 ~ 10이 될것이다.
그러므로 자연수들을 입력받은 후 최솟값과 최대값을 구해주고 그 안에서 브루트포스를 진행하면 된다.
대표 자연수가 2개 이상일 경우에 그중 제일 작은 자연수를 출력하면 되므로 최솟값을 갱신할때 등호가 없이 >로 비교해주면 된다.
Code
input = __import__('sys').stdin.readline
n = int(input())
arr = (list(map(int,input().split())))
mins = min(arr) #대표 자연수의 최솟값
maxs = max(arr) #대표 자연수의 최대값
ans = 0 #대표 자연수의 값
minplus = int(1e9) #차이가 최소인 경우
for i in range(mins, maxs+1):
sums = 0
#자연수들이 있는 배열에서 현재 수와의 차이를 전부 더한 후 가장 작으면 최신화
for t in arr:
sums += abs(t-i)
if minplus > sums:
minplus = sums
ans = i
print(ans)
'Koala - 13기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/C++] 14889 스타트와 링크 (0) | 2024.01.14 |
---|---|
[백준/C++] 2003번: 수들의 합 2 (0) | 2024.01.13 |
[Baekjoon/C++] 15654: N과 M (5) (0) | 2024.01.12 |
[백준/C++] 날짜 계산 (0) | 2024.01.12 |
[프로그래머스/Python] 소수 찾기 (0) | 2024.01.10 |