본문 바로가기

Problem Solving321

[백준] 2108번 - 통계학 문제 > 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 > 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 출력 > 첫째 줄에는 산술평균을 출력한다. 소수점 이하 첫째 자리에.. 2020. 1. 7.
[백준] 1978번 - 소수 찾기 문제 > 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 > 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 > 주어진 수들 중 소수의 개수를 출력한다. 해결방법 > n까지의 소수를 찾기위해서 n^(1/2)까지 탐색 C++ #include #include using namespace std; int main(){ int num, cnt = 0; cin >> num; for(int i = 0; i > temp; if(temp < 2) continue; for(int j = 2; j 2020. 1. 7.
[백준] 1929번 - 소수 구하기 문제 > M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 > 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) 출력 > 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 해결방법 > 입력 데이터가 최대 1,000,000이므로 아리토스테네스의 체를 사용. 에라토스테네스의 체는 소수를 구하는 방법으로 2부터 시작해서 각 소수의 배수를 모두 제거해서 소수를 판별해야할 데이터를 줄이는 방식이다. package baekjoon; import java.util.*; public class BOJ_1929{ public static void main(String[] args) { Scanner sc = new Scanner(System.in).. 2020. 1. 7.
[백준] 1712번 - 손익분기점 문제 > 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다. A, B, C가 주.. 2020. 1. 7.
[백준] 1427번 - 소트인사이드 문제 > 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 > 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 > 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 해결방법 > 문자열로 입력받아 내림차순으로 정렬 #include #include #include using namespace std; int main(){ string s; cin >> s; sort(s.begin(), s.end()); reverse(s.begin(), s.end()); cout https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. .. 2020. 1. 7.
[백준] 1193번 - 분수찾기 문제 > 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 > 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 > 첫째 줄에 분수를 출력한다. 해결방법 > 행렬을 각 원소를 대각선 부분집합으로 생각하면 { 1/1 } , { 1/2, 2/1 }, { 3/1, .. 2020. 1. 7.
[백준] 1181번 - 단어 정렬 문제 > 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 입력 > 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 > 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. 해결방법 > 1. 문자열 길이 2. 사전순 3. 중복 단어 제거 #include #include #include #include using namespace std; bool compare(pair a, pair b){ if(a... 2020. 1. 7.
[백준] 1085번 - 직사각형에서 탈출 문제 > 한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. 입력 > 첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다. 출력 > 첫째 줄에 문제의 정답을 출력한다. 해결방법 > 현재 위치에서 각 경계선까지의 거리 중에 최소 거리를 구한다.(x, y, w-x, h-y) C++ #include #include using namespace std; int main(){ int d[4]; int w, h;.. 2020. 1. 7.
[백준] 1026번 - 보물 문제 > 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0]*B[0] + ... + A[N-1]*B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다. S의 최솟값을 출력하는 프로그램을 작성하시오. 입력 > 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다. 출력 > 첫째 줄에 S의 최솟값을 출력한다. .. 2020. 1. 7.