-- 예전 기록/BOJ 369

[ BOJ ] 28701 : 세제곱의 합 ( BRONZE 5 ) / C, Python

문제 은하는 수업 때 $1$부터 $N$까지 수의 합과 $1$부터 $N$까지 수의 세제곱의 합과 관련된 다음 공식을 배웠습니다. $ (1+2+⋯+N)^2=1^3+2^3+⋯+N^3$ 믿을 수 없었던 은하는 직접 코딩을 해서 검증해 보기로 했습니다. $1$부터 $N$까지 수의 합과 그 수를 제곱한 수, 또 $1$부터 $N$까지 수의 세제곱의 합을 차례대로 출력하세요. 입력 첫 줄에 문제의 정수 $N$이 주어집니다. $(5 \le N \le 100)$ 출력 세 줄을 출력하세요. 첫 줄에는 $1$부터 $N$까지 수의 합 $1+2+\cdots+N$을 출력하세요. 둘째 줄에는 $1$부터 $N$까지 수의 합을 제곱한 수 $(1+2+\cdots+N)^2$을 출력하세요. 셋째 줄에는 $1$부터 $N$까지 수의 세제곱의 합..

[ BOJ ] 5585 : 거스름돈 ( BRONZE 2 ) / C, Python

문제 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사고 카운터에서 1000엔 지폐를 한장 냈을 때, 받을 잔돈에 포함된 잔돈의 개수를 구하는 프로그램을 작성하시오. 입력 입력은 한줄로 이루어져있고, 타로가 지불할 돈(1 이상 1000미만의 정수) 1개가 쓰여져있다. 출력 제출할 출력 파일은 1행으로만 되어 있다. 잔돈에 포함된 매수를 출력하시오. 풀이 과정 거스름돈을 500엔, 100엔, 50엔, 10엔, 5엔, 1엔으로 나누었을 때 동전 갯수를 출력한다. 동전 갯수 = ( 거스름돈을 500으로 나눈 몫 ) + ( (거스름돈을 500으로..

[ BOJ ] 28444 : HI-ARC=? ( BRONZE 5 ) / C, Python

문제 HI-ARC 학회는 일상 속의 문장들을 수식으로 표현하는 것을 즐기는 특이한 문화를 가지고 있다. HI-ARC 수식은 HI-ARC 학회에서 최근에 개발한 독특한 수식으로, 아래와 같은 규칙으로 계산한다. H와 I의 곱이 첫 번째 항이다. A와 R과 C의 곱이 두 번째 항이다. 결과값은 첫 번째 항에서 두 번째 항을 뺀 값이다. 각각의 문자에 대응되는 숫자가 입력될 때, 결과값을 출력하자! 입력 첫째 줄에 각 문자에 들어갈 값 H, I, A, R, C (0 ≤ H, I, A, R, C ≤ 100, H, I, A, R, C는 정수) 가 공백을 사이에 두고 순서대로 주어진다. 출력 수식을 계산한 결과값을 출력한다. 풀이 과정 결과값은 (H와 I의 곱) 에서 (A와 R과 C의 곱) 을 뺀 값이다. 이를 출..

[ BOJ ] 29720 : 그래서 님 푼 문제 수가? ( BRONZE 3 ) / C, Python

문제 브실이는 하루라도 빨리 대회 출제 자격을 얻기 위해서 1000문제 해결을 목표로 매일 문제를 풀고 있다. 그러다 보니 다른 사람들의 푼 문제 수에 관심이 많다. 사람들은 “저는 총 1000문제 이상 해결하려면 하루에 5문제씩 최소 128일은 더 풀어야 해요”와 같이 자신이 몇 문제를 풀었는지 설명한다. 브실이는 이 말을 들을 때마다 상대방이 현재까지 몇 문제를 풀었는지 궁금해서 참을 수 없었다. 브실이를 도와 상대방이 푼 문제 수의 최솟값과 최댓값을 구해보자. 입력 첫 번째 줄에 양의 정수 N, M, K가 공백으로 구분되어 주어진다. (1 ≤ N, M, K ≤ 2000) 이는 “저는 총 N문제 이상 해결하려면 하루에 M문제씩 최소 K일은 더 풀어야 해요”라는 의미이다. K일이 지나기 전에 N문제를 ..

[ BOJ ] 1402 : 아무래도이문제는A번난이도인것같다 ( SILVER 5 ) / C, Python

문제 어떤 정수 A가 있으면 그 수를 A = a1 * a2 * a3 * a4 ... * an으로 했을 때 A' = a1 + a2 + a3 ... + an이 성립하면 "A는 A'으로 변할 수 있다"라고 한다. (ai는 정수) 만약 A'이 A"으로 변할 수 있으면 "A는 A"으로 변할 수 있다"라고 한다. 이때 A와 B가 주어지면 A는 B로 변할 수 있는지 판별하시오. 입력 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 100)이 주어진다. 테스트 케이스마다 두 정수 A, B(-231 ≤ A, B ≤ 231-1)가 주어진다. 출력 각각의 테스트 케이스마다 한 줄에 변할 수 있으면 yes, 아니면 no를 출력한다. 풀이 과정 A -> B로 바꾸기 위해서는, 1 과 -1 을 적절히 사용하면 된다. Ex) ..

[ BOJ ] 23825 : SASA 모형을 만들어보자 ( BRONZE 4 ) / C, Python

문제 당신은 SASA 연못에서 알파벳 S 모양의 블록 N개와 알파벳 A 모양의 블록 M개를 건졌다. 태영이는 연못에서 건진 블록을 이용해 학교에 전시할 SASA 모형을 최대한 많이 만들려고 한다. SASA 모형 1개를 만들기 위해서는, 알파벳 S 모양의 블록 2개와 알파벳 A 모양의 블록 2개가 필요하다. 태영이가 만들 수 있는 SASA 모형 개수의 최댓값을 구하라. 입력 첫째 줄에 알파벳 S 모양의 블록의 개수 N과 알파벳 A 모양의 블록의 개수 M이 공백으로 구분되어 주어진다. 출력 태영이가 만들 수 있는 SASA 모형 개수의 최댓값을 출력한다. 풀이 과정 아무리 S 모양 블록을 많이 가진다 한들, A 모양 블록이 부족하면 SASA 모형을 A 모양 블록 개수에 맞게 만들 수 밖에 없다. 아무리 A 모..

[ BOJ ] 2355 : 시그마 ( BRONZE 2 ) / C, Python

문제 두 정수 A와 B가 주어졌을 때, 두 정수 사이에 있는 수의 합을 구하는 프로그램을 작성하시오. 사이에 있는 수들은 A와 B도 포함한다. 입력 첫째 줄에 두 정수 A, B가 주어진다. (-2,147,483,648 ≤ A, B ≤ 2,147,483,647) 출력 첫째 줄에 답을 출력한다. (-2,147,483,648 ≤ 답 ≤ 2,147,483,647) 풀이 과정 A, B의 제한이 넓고, 시간 제한도 0.25 초라서 단순 브루트포스(A부터 B까지 합을 반복문으로 하나씩 더하기) 로는 해결할 수 없다. 따라서 이를 A와 B 사이에 있는 수의 합을 한번에 구할 수 있을 수식이 필요하다. 필자는 가우스 공식을 활용하여, A < B 라고 할 때, (1부터 B까지의 합) - (1부터 (A-1)까지의 합) 으로..

[ BOJ ] 17263 : Sort 마스터 배지훈 ( BRONZE 3 ) / C, Python

문제 지훈이는 Sort 마스터다. 그래서 어떠한 N개의 원소를 가진 배열이 들어오더라도 암산으로 오름차순 정렬을 할 수 있다고 한다. 의심 많은 보성이는 지훈이를 테스트해 보기로 마음먹었다. 하지만 모든 원소를 일일이 다 확인하는 것은 너무 귀찮은 일이라 생각한 보성이는 정렬된 배열의 마지막 원소만 맞는지 확인해 보기로 했다. 보성이를 위하여 마지막 원소를 알려주는 프로그램을 만들어주자. 입력 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 N개의 정수 A[1], A[2], ... , A[N]이 주어진다. (0 ≤ A[i] ≤ 10^9) 출력 첫째 줄에 정렬된 배열 A의 마지막 원소를 출력한다. 풀이 과정 오름차순으로 정렬된 배열의 마지막 값 : 배열의 최댓값이다. 최댓값을 찾아서..

[ BOJ ] 29807 : 학번을 찾아줘! ( BRONZE 4 ) / C, Python

문제 나는 7번의 수능 끝에 한양대학교 23학번으로 입학하게 된 김한양이다. 한양대학교 추가합격 전화를 받고 기뻐서 친구들과 술을 마시며 길을 걷다가 언덕 아래로 굴러 떨어지고 말았다. 깨어나보니 2주가 흘러 있었고, 수강신청까지는 15분밖에 남지 않았다. 수강신청 홈페이지에 들어갔지만 부상의 후유증으로 학번이 기억나지 않았다. 한양대학교 공지사항을 확인해보니 학번을 생성하는 방법에 대한 안내문이 있었다. 한양대학교는 Engine of Korea라고 불리는 만큼 학번을 만들 때 특수한 공식을 사용한다. 기본적으로 한양대학교 학번을 알아내기 위해서는 정확한 수능 점수(표준 점수)를 알고 있어야 한다. 국어 점수가 영어 점수보다 높다면, 두 점수의 차에 인문관의 건물 번호 508을 곱해준다. 아니라면, 두 ..

[ BOJ ] 1085 : 직사각형에서 탈출 ( BRONZE 3 ) / C, Python

문제 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 x, y, w, h가 주어진다. 출력 첫째 줄에 문제의 정답을 출력한다. 풀이 과정 경계선까지 가는 최소 거리는 다음 4가지를 비교해야 한다. 가로 기준으로, x 에서 0까지 가는게 빠른지 x 에서 w 까지 가는게 빠른지 세로 기준으로, y 에서 0까지 가는게 빠른지 y 에서 h 까지 가는게 빠른지 이 중 최솟값을 출력한다. C #include int main(void) { int x, y, w, h; scanf("%d %d %d %d", &x, &y, &w, &h..