https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 해설 : 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 풀이 : 쉬운 구현 문제이다. 각 개념에 대해 연산을 진행하면 된다. 소스코드 : 1 2 3 4 5..
https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 해설 : 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 문제이다. 풀이 : 주어진 수를 각각 1부터 N까지 나누며 소수인지 판별한다. 소스코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import sys input = sys.stdin.readline if __name__ == "__main__": N = int(input()) num = list(map(int,input().split())) ans ..
https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 해설 : 재료의 개수 N개와 각 재료마다 고유 번호가 주어진다. 또한 갑옷을 한 개 만들기 위해 필요한 고유번호의 합 M이 주어진다. 재료들을 2개씩만 합쳐서 갑옷을 만들 수 있는 개수를 찾는 문제이다. 풀이 : 투포인터의 기본적인 문제이다. 오름차순 또는 내림차순으로 정렬한 후, 양쪽 끝 값을 더하며 M보다 작다면 작은쪽의 인덱스를 변화시키고 크다면 큰 쪽의 인덱스를 변..
https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 해설 : 수빈이는 A라는 위치에 있고 동생은 B라는 위치에 있다 (A, B)는 모두 자연수 수빈이는 현재위치 X에서 X+1, X-1, 2*X의 이동을 할 수 있다고 한다. 모든 연산엔 시간이 1씩 소모된다고 했을 때 동생을 찾는데 소모되는 최소 비용을 찾는 문제이다. 풀이 : 현재위치 X에 X+1, X-1, X*2 연산을 진행하며 X를 만날 때까지 실행되게 하였다. 지금..
https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 해설 : N개의 포켓몬 이름이 주어지고 알고 싶은 값이 포켓몬 이름(문자열) 또는 숫자로 주어진다. 문자열로 주어진 포켓몬 이름은 몇 번째 포켓몬인지 출력하고 (숫자로) 숫자로 주어진 번호는 그 번호의 포켓몬 이름을 출력하면 된다. (문자열로) 풀이 : 포켓몬의 이름과 순서에 대응하는 Dictionary를 만들어 값을 치환해주었다. 소스코드 : 1 2 3 4 5 6 7..
https://www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 해설 : X와 "." 으로 이루어진 문자열을 'AAAA'와 'BB'로 치환할 수 있는지 찾는 문제이다. 치환할 수 있다면 사전순으로 가장 앞서는 치환값을 출력하면 된다. 풀이 : 주어진 문자열을 탐색하며 X를 만났을 때 연속되는 X의 개수를 센다. X의 개수가 홀수개라면 -1을 리턴하고 아니라면 AAAA 또는 BB로 치환한다. AAAA가 들어갈 수 있을 때 우선적으로 넣어줘야 사전순으로 앞서는 답을 도출할 수 있다. 소스코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1..
https://www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 해설 : N명의 사람을 키순으로 줄 세우려 한다. 각 사람의 키는 1, 2, 3, 4 ··· 순으로 증가하게 주어진다. 또한, 사람들은 줄을 설 때 자기보다 키가 큰 사람이 자신의 왼쪽에 몇 명 있었는지만 기억하고 있다. 이 때, 주어진 조건으로 사람들을 줄 세우는 방법을 출력하는 문제이다. 풀이 : 주어지는 배열은 사람들이 자신의 왼쪽에 자기보다 큰 사람이 몇 명 있었는지 기억하는 대이터..
https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 해설 : 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 과장해서 말한다. 당연히 과장해서 이야기하는 것이 훨씬 더 재미있기 때문에, 되도록이면 과장해서 이야기하려고 한다. 하지만, 지민이는 거짓말쟁이로 알려지기는 싫어한다. 문제는 몇몇 사람들은 그 이야기의 진실을 안다..