BOJ 57

[백준] 9506번: 약수들의 합 | C++ 풀이

# 문제 n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라. # 풀이 크게 어렵지 않은 문제다. 문제에서 요구하는 대로 차근차근 진행해보자. 바로 정답 소스코드 확인! #include #include using namespace std; int main(){ ios_base::sync_with_stdio(false);// 두 표준 입출력 동기화 해제 cin.tie(NULL);// 입력과 출력 묶음을 풀기 int n = 0; while(1){ cin >> n; if(n == -1) break; vector factor; int perfect = 0; for(int i=1; i

백준/C++ 2023.06.08

[백준] 5086번: 배수와 약수 | C++ 풀이

# 문제 두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오. # 풀이 규칙찾기의 일반 수학 1을 넘어 약수와 배수, 소수 파트로 넘어왔다. 간단한 문제이니 바로 정답 소스코드를 확인해보자. #include using namespace std; int main(){ ios_base::sync_with_stdio(false);// 두 표준 입출력 동기화 해제 cin.tie(NULL); // 입력과 출력 묶음을 풀기 int a, b; while (1){ cin >> a >> b; if(a == 0 && b == 0) break; if(b%a == 0) cout

백준/C++ 2023.06.06

[백준] 10757번: 큰 수 A+B | C++ 풀이

# 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. # 풀이 C++에서 큰 수의 연산은 string으로 받으면 될 것 같은데 딱 여기까지만 떠오르고 그 이후의 방법이 생각이 안 났다. 특히 올림을 어떻게 처리할지가 막막했는데 공부한다 생각하고 우선 다른 분들의 코드를 많이 보러 다녔다. 그렇게 해서 얻어낸 나의 정답 소스 코드, 바로 확인해보자. #include #include #include using namespace std; string addNum(string a, string b); int main() { string a, b; cin >> a >> b; string sum = addNum(a, b); cout = 0; i--) { int digitSum = (..

백준/C++ 2023.06.05

[백준] 2869번: 달팽이는 올라가고 싶다 | C++ 풀이

# 문제 🐌 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. # 풀이 아주 귀여운 문제지만 시간 제한을 신경써야 하는 문제다. 정답 코드부터 한 번 확인해보자. #include using namespace std; int main(){ ios_base::sync_with_stdio(false);// 두 표준 입출력 동기화 해제 int a, b, v; int day = 1; cin >> a >> b >> v; day += (v-a) / (a-b); if((v-a)%(a-b)) cout

백준/C++ 2023.06.04

[백준] 1193번: 분수찾기 | C++ 풀이

# 문제 X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. # 풀이 이번에도 지난 번 두 문제와 같이 규칙찾기 문제다. 단계별 풀이에서 제공해주는 문제 순서에 맞춰 풀이하기를 권한다. 앞선 두 문제를 풀고 오신 분들이라면 규칙부터 한 번 찾아보자. 분수는 다음과 같은 순서로 넘버링이 되고 있다. 이때 우리는 대각선별로 숫자를 구분해볼 수 있는데 다음 그림을 확인해보자. 우선 분자, 분모의 합이 같은 대각선으로 그룹을 지어줄 수 있다. 분자와 분모 합이 2인 1/1은 1번 대각선 분자와 분모 합이 3인 2/1, 1/2는 2번 대각선 합이 4인 3/1, 2/2, 1/3은 3번 대각선과 같은 식이다. 여기서 다시 한 번 진행방향에 따라 대각선을 구분해주었다. 노란색으로 표시된 홀수 대각선은 진행..

백준/C++ 2023.06.03

[백준] 2292번: 벌집 | C++ 풀이

# 문제 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. # 풀이 지난 번 풀이한 중앙 이동 알고리즘 문제와 같이 규칙을 찾아내야 하는 문제다. 이번엔 규칙부터 확인! 벌집의 전개의 규칙을 찾을 땐 다음과 같이 그림을 바라보면 된다. 1 1개 1층(초기 층) 2-7 6개 2층 8-19 12개 3층 20-37 18개 4층 초기 층인 1층을 제외하고, 다음 층으로 이동할 때마다 6의 배수로 방이 늘어나고 있다. 그리고 몇 개의 방을 지나가는지 계산할 때, 시작과 끝을 포함하여 계산하므로 입력된 n이 속해있는 층을 출력해주면 그대로 정답이다. 그렇다면 바로 정답 소스코드를 확인해보자. #..

백준/C++ 2023.06.02

[백준] 2720번: 세탁소 사장 동혁 | C++ 풀이

# 문제 거스름돈의 액수가 주어지면 리암이 줘야할 쿼터(Quarter, $0.25)의 개수, 다임(Dime, $0.10)의 개수, 니켈(Nickel, $0.05)의 개수, 페니(Penny, $0.01)의 개수를 구하는 프로그램을 작성하시오. # 풀이 참나 디아블로? 에펙하느라 코딩할 시간이 없는 거면 대신 해줄게 이자식아 어렵지 않은 문제다. 바로 정답 소스코드를 확인해보자. #include using namespace std; int main(){ ios_base::sync_with_stdio(false);// 두 표준 입출력 동기화 해제 cin.tie(NULL);// 입력과 출력 묶음을 풀기 int t, c; int coin[4] = {25, 10, 5, 1}; cin >> t; while(t--){..

백준/C++ 2023.05.31

[백준] 11005번: 진법 변환 2 | C++ 풀이

# 문제 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. # 풀이 바로 지난 글에서 풀이했던 진법 변환의 두 번째 문제다. 이번엔 반대로 10진법 수를 n진법으로 변환하는 문제인데, 앞선 문제를 풀이하지 않았다면 풀어보고 오는 것을 권한다. (2745번 풀이 글 링크) 2745번 문제를 풀었다면 이를 반대로 전개하면 되므로 쉽게 풀 수 있었을 거라 생각한다. 정답 소스코드를 보며 필요한 개념을 정리해보자. #include using namespace std; int main(){ ios_base::sync_with_stdio(false);// 두 표준 입출력 동기화 해제 int n, b; string res; cin >> n >> b; while(n > 0){ int..

백준/C++ 2023.05.30
728x90