본문 바로가기

알고리즘15

백준 알고리즘 10101문제. 삼각형 외우기 문제문제: 창영이는 삼각형의 종류를 잘 구분하지 못한다. 따라서 프로그램을 이용해 이를 외우려고 한다.삼각형의 세 각을 입력받은 다음,세 각의 크기가 모두 60이면, Equilateral세 각의 합이 180이고, 두 각이 같은 경우에는 Isosceles세 각의 합이 180이고, 같은 각이 없는 경우에는 Scalene세 각의 합이 180이 아닌 경우에는 Error를 출력하는 프로그램을 작성하시오.입력: 총 3개의 줄에 걸쳐 삼각형의 각의 크기가 주어진다. 모든 정수는 0보다 크고, 180보다 작다. 출력: 문제의 설명에 따라 Equilateral, Isosceles, Scalene, Error 중 하나를 출력한다.예제 입력: 60 50 70예제 출력: .. 2025. 4. 21.
백준 9063문제. 대지 문제문제: 임씨는 1950 년 한국전쟁으로 많은 손해를 본 사람들 중 하나다. 전쟁 통에 손해보지 않은 사람이 어디 있을까 만은 그는 6.25 가 일어나기 전만 해도 충청도 지방에 넓은 대지를 소유한 큰 부자였다. 전쟁이 나자 임씨는 땅문서와 값 나가는 것들만 챙겨서 일본으로 피난을 가지만 피난 중에 그만 땅문서를 잃어버리고 만다. 전쟁이 끝난 후에 임씨의 땅은 이미 다른 사람들의 논밭이 되어 있었고, 임씨는 땅을 되찾으려 했지만 문서가 없으니 생떼 쓰는 것과 다를 바 없었다. 이러다가 임씨는 길바닥에 나앉게 생겼다.이때, 임씨에게 좋은 생각이 떠올랐으니 바로 자신이 습관처럼 땅 깊숙이 뭔가 표식을 해놓았던 사실이다. 임씨는 한적할 때마다 자신의 논밭을 거닐다가 땅속 깊은 곳에 자신의 이름이 씌어진 옥구.. 2025. 4. 20.
백준 15894문제. 수학은 체육과목 입니다. 문제문제: 성원이는 수학을 정말 못 하는 고등학생이다. 수학을 못하는 대신 근성과 팔 힘이 뛰어난 성원이는 수학 시험에서 수학 지식을 사용하지 않고 근성과 체력을 사용해 문제를 푼다. 지난 시험에서는 아래 사진에 나와있는 문제를 근성과 체력을 사용해 열심히 풀었지만 사진에서 볼 수 있듯이 틀려버리고 말았다! 결국 이 문제는 틀려버렸지만 성원이는 여전히 자신의 체력에 강한 자신감을 갖고 있다. 어떤 어려운 문제가 나와도 이런 식으로 근성과 체력을 사용하면 다 풀 수 있으니 이 방법은 최고의 방법이라고 생각하고 있다.성원이의 친구 형석이는 근성과 체력으로 수학 문제를 푸는 것은 굉장히 무식한 방법이라고 생각한다. 형석이는 수학을 공부하면 문제를 훨씬 빨리 풀 수 있다는 것을 알려주기 위해 위 사진에 나와있.. 2025. 4. 19.
백준 3009문제. 네 번째 점 문제문제: 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.입력: 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.출력: 직사각형의 네 번째 점의 좌표를 출력한다.예제 입력:5 55 77 5또는30 2010 1010 20예제 출력: 7 7 또는 30 10 풀이const fs = require('fs');const input = fs.readFileSync(0, 'utf-8').trim().split('\n');const arrX = [];const arrY = [];for(let i = 0; i 풀이 해석1. 백준 표준 입력을 받아와서 문자열로 읽고, trim()으로 공백을 제거한 뒤 s.. 2025. 4. 18.
백준 1085문제. 직사각형에서 탈출 문제문제: 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. 입력: 첫째 줄에 x, y, w, h가 주어진다. 출력: 첫째 줄에 문제의 정답을 출력한다. 제한:1 ≤ w, h ≤ 1,0001 ≤ x ≤ w-11 ≤ y ≤ h-1x, y, w, h는 정수예제 입력:6 2 10 3또는1 1 5 5또는653 375 1000 1000또는161 181 762 375예제 출력: 1 또는 1 또는 347 또는 161 풀이const fs = require('fs');const input = fs.readFileSync(0, 'utf-8').trim(.. 2025. 4. 17.
백준 27323문제. 직사각형(10단계 시작!) 문제문제: 정수 A, B 가 주어진다. 세로 길이가 A cm, 가로 길이가 B cm 인 아래와 같은 직사각형의 넓이를 cm2 단위로 구하시오.입력: 표준 입력에 다음과 같은 형태로 입력이 주어진다.AB출력: 세로 길이가 A cm, 가로 길이가 B cm인 직사각형의 넓이를 cm2 단위로 구하고, 단위 (cm2)를 생략하여 출력한다.제한:1 ≦ A ≦ 100.1 ≦ B ≦ 100.A, B 는 정수이다.예제 입력: 2 또는 100 또는 4 3 1 4예제 출력: 6 또는 100 또는 16 풀이const fs = require('fs');const input = fs.readFileSync(0, 'utf-8').trim().split('\n').map(.. 2025. 4. 16.
백준 11653번. 소인수분해 문제문제: 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.입력: 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.출력: N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.예제 입력: 72 또는 3 또는 6 또는 2 또는 9991예제 출력: 2 또는 3 또는 2 또는 2 또는 97 2 3 103 2 3 3 풀이const fs = require("fs");let n = Number(fs.readFileSync("/dev/stdin").toStr.. 2025. 4. 15.
백준 2581문제. 소수 문제문제: 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.입력: 입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.출력: M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.예제 입력:60100또는 6465예제 출력:.. 2025. 4. 14.
백준 1978문제. 소수 찾기 문제문제: 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력: 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력: 주어진 수들 중 소수의 개수를 출력한다. 예제 입력:41 3 5 7예제 출력: 3 풀이const fs = require("fs");const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");const u = Number(input[0]);const a = input[1].split(' ').map(Number);let countA = 0;for(let i = 0; i 풀이 해석1. fs.readFileSy.. 2025. 4. 13.
백준 9506문제. 약수들의 합 문제문제: 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다.n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.입력: 입력은 테스트 케이스마다 한 줄 간격으로 n이 주어진다. (2 입력의 마지막엔 -1이 주어진다.출력: 테스트케이스 마다 한줄에 하나씩 출력해야 한다.n이 완전수라면, n을 n이 아닌 약수들의 합으로 나타내어 출력한다(예제 출력 참고).이때, 약수들은 오름차순으로 나열해야 한다.n이 완전수가 아니라면 n is NOT perfect. 를 출력한다.예제 입력:61228-1예제 출력:6 = 1 + 2 + 312 is NOT perfect.28 = 1 + 2 + 4 + 7 + 14 풀이const fs =.. 2025. 4. 12.
백준 2501문제. 약수 구하기 문제문제: 어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. 6을 예로 들면6 ÷ 1 = 6 … 06 ÷ 2 = 3 … 06 ÷ 3 = 2 … 06 ÷ 4 = 1 … 26 ÷ 5 = 1 … 16 ÷ 6 = 1 … 0그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다.두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.입력: 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. 출력: 첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력하시오... 2025. 4. 11.
백준 1193문제. 분수찾기 문제문제:무한히 큰 배열에 다음과 같이 분수들이 적혀있다.1/11/21/31/41/5…2/12/22/32/4……3/13/23/3………4/14/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 또는 2 또는 3 또는 4 또는 5 또는 6 또는 7 또는 8 또는 9 또는 14예제 출력: 1/1 또는 1/2 또는 2/1 또는 3/1.. 2025. 4. 8.
백준 2292문제. 벌집 문제문제:위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.입력: 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.출력: 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.예제 입력: 13예제 출력: 3 풀이const fs = require("fs");const input = Number(fs.readFi.. 2025. 4. 7.
백준 2720문제. 세탁소 사장 동혁 문제문제: 미국으로 유학간 동혁이는 세탁소를 운영하고 있다. 동혁이는 최근에 아르바이트로 고등학생 리암을 채용했다.동혁이는 리암에게 실망했다. 리암은 거스름돈을 주는 것을 자꾸 실수한다.심지어 $0.5달러를 줘야하는 경우에 거스름돈으로 $5달러를 주는것이다!어쩔수 없이 뛰어난 코딩 실력을 발휘해 리암을 도와주는 프로그램을 작성하려고 하지만, 디아블로를 하느라 코딩할 시간이 없어서 이 문제를 읽고 있는 여러분이 대신 해주어야 한다.거스름돈의 액수가 주어지면 리암이 줘야할 쿼터(Quarter, $0.25)의 개수, 다임(Dime, $0.10)의 개수, 니켈(Nickel, $0.05)의 개수, 페니(Penny, $0.01)의 개수를 구하는 프로그램을 작성하시오. 거스름돈은 항상 $5.00 이하이고, 손님이 받.. 2025. 4. 5.
백준 2745문제. 진법 변환(일반수학1 시작!) 문제문제: B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35입력: 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36). B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.출력: 첫째 줄에 B진법 수 N을 10진법으로 출력한다. 예제 입력: ZZZZZ 36 예제 출력: 60466175 풀이(왼 → 오)const fs = require('fs');const [N, B] = fs.readFileSync(0, 'utf-8').trim().split(' ');const.. 2025. 4. 3.