분류 전체보기 73

[백준] 10811번: 바구니 뒤집기 | C++ 풀이

# 문제 바구니의 순서를 어떻게 바꿀지 주어졌을 때, M번 바구니의 순서를 역순으로 만든 다음, 바구니에 적혀있는 번호를 가장 왼쪽 바구니부터 출력하는 프로그램을 작성하시오. # 풀이 이번 문제에서는 살짝 주춤한 분들이 있을 수도 있겠다. 하지만 잘 생각해보면 어렵지 않은 문제다. 우리는 아직 solved.ac 기준 브론즈 2를 푸는 중이기 때문... 정답 소스코드를 확인하며 차분히 생각해보자. #include using namespace std; int main(){ int n, m; // n개의 바구니, m번 순서 변경 int a, b; // a번째 바구니부터 b번째 바구니의 순서를 역순으로 변경 cin >> n >> m; int basket[n+1]; for(int i=1; i> a >> b; if..

백준/C++ 2023.05.14

[백준] 3052번: 나머지 | C++ 풀이

# 문제 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. # 풀이 이 문제는 무엇을 구해야 하는지 잘 봐야한다. 서로 다른 나머지가 몇 개 있는지 출력하면 되는 문제다. 바로 정답 소스코드를 확인해보자. #include using namespace std; int main(){ bool remainder[42] = {0}; // 42로 나눈 나머지는 0~41까지 존재 int num; int cnt = 0; while(cin >> num){ remainder[num%42] = 1; } for(int i=0; i num){ remainder[num%42] = 1; } 지난 번처럼 EOF를 활용해 입력과 반복문 처리를 해주고..

백준/C++ 2023.05.13

[백준] 5597번: 과제 안 내신 분..? | C++ 풀이

# 문제 교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오. # 풀이 bool 타입을 활용해주면 쉽게 풀 수 있는 문제다. 당황하지 말고 풀어보자. 정답 소스코드부터 확인! #include using namespace std; int main(){ bool submit[31] = {0}; // 제출 확인 배열 default: false int num; while(cin >> num){ submit[num] = 1; // 제출한 학생 true } for(int i=1; i

백준/C++ 2023.05.12

[백준] 10818번: 최소, 최대 | C++ 풀이

# 문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. # 풀이 지난 번 리뷰한 10871번을 풀었다면 어렵지 않은 문제다. 바로 정답 소스코드를 확인해보자. #include using namespace std; int main(){ ios_base::sync_with_stdio(false); // 두 표준 입출력 동기화 해제 cin.tie(NULL); // 입력과 출력 묶음을 풀기 int n, max, min; cin >> n; int num[n]; for(int i=0; i> num[i]; } max = min = num[0]; for(int i=1; i num[i]) min = num[i]; } cout

백준/C++ 2023.05.10

[백준] 10871번: X보다 작은 수 | C++ 풀이

# 문제 정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오. # 풀이 배열의 개념을 알고 앞선 조건문 문제들을 잘 풀어냈다면 쉬운 문제다. 정답 소스코드를 확인해보기 전, ios_base::sync_with_stdio(false); cin.tie(NULL); 만약 이 두 코드에 대해 모르는 분이 있다면 아래 더보기를 펼쳐 문제를 풀고, 링크해둔 글들을 읽고 오길 권한다. 더보기 풀어볼 문제 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 읽어보면 좋은 글 글..

백준/C++ 2023.05.09

[백준] 2480번: 주사위 세개 | C++ 풀이

# 문제 3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오. # 풀이 1 경우를 나누고 구해야 할 것이 여태까지에 비해 조금은 많은 문제다. 우선 주어진 규칙에 따라 같은 눈이 없는 경우, 2개인 경우, 모두 같은 경우를 나누어야 한다. 그 다음 같은 눈이 없는 경우에는 가장 큰 눈을 찾아주고, 같은 눈이 2개인 경우에는 같은 눈 값을 찾아주면 된다. 정답 소스코드를 확인하고, 차분히 하나씩 경우를 나눠 코드를 작성해보자. #include using namespace std; int main(){ int num[3]; int max, tmp; // max: 최댓값 tmp: 같은 눈 2개 나온 경우, 같은 눈 cin >> num[0] >> num[1] >> num[2]; // 모..

백준/C++ 2023.05.06

[백준] 2525번: 오븐 시계 | C++ 풀이

# 문제 훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오. # 풀이 지난 번 풀이했던 알람 시계 문제 와 같은 시간 계산 문제다. 그땐 45분을 빼주었다면, 이번엔 주어진 시간을 더해주어야 한다. 요리하는 데에 필요한 시간은 0에서 1,000분까지이므로 최대 16시간 40분을 더하는 경우까지 발생할 수 있음을 기억하자. 바로 정답 소스코드를 보도록 하겠다. #include using namespace std; int main(){ int h, m, time; cin >> h >> m >> time; if(m+time > 59){ h += (m+time)/60; if(((m+time)%60) == 0) m = 0..

백준/C++ 2023.05.05

[백준] 2884번: 알람 시계 | C++ 풀이

# 문제 현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오. # 풀이 아주 간단한 시간 계산 문제다.우리가 고려해야할 건 딱 두 가지이다. 입력된 시간의 분 값이 45보다 작을 경우, 그리고 이때 시간 값이 0일 경우. 정답 소스코드를 보며 확인해보자. #include using namespace std; int main(){ int h, m; cin >> h >> m; if(m >= 45) m -= 45; else{ m += 15; if(--h < 0) h = 23; } cout

백준/C++ 2023.05.04

[백준] 2588번: 곱셈 | C++ 풀이

# 문제 (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다. # 풀이 나눗셈 연산자와 나머지 연산자에 대해 알고 있다면 어렵지 않은 문제다. 코드를 보기에 앞서 어떻게 풀면 좋을지 잠시 생각해보자. 우리가 구해야 할 값은 (3), (4), (5), (6)이다. 다음을 통해 살펴보면 (3)은 (1)과 (2)의 5를 곱한 값, 472*5 = 2360 (4)는 (1)과 (2)의 8을 곱한 값, 472*8 = 3776 (5)는 (1)과 (2)의 3을 곱한 값, 472*3 = 1416 (6)은 (1)과 (2)를 그대로 곱한 값이다. 그렇다면 우리는 (2)를 분해할 필요가 생기는데, 이때 필요한 것이 나머지 연산자다. (+나눗셈 연산자) 정답 소스코드를 보며 확인해보자. #include u..

백준/C++ 2023.05.03
728x90