백준/C++ 64

[백준] 5622번: 다이얼 | C++ 풀이

# 문제 할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오. # 풀이 solved.ac 기준 브론즈 2에 해당하는 문자열 문제! 두 가지 방법으로 풀어볼 수 있을 것 같다. 하나씩 차근차근 소스코드를 확인해보자. # 1 #include using namespace std; int main(){ int time = 0; string call; cin >> call; for(int i=0; i

백준/C++ 2023.05.18

[백준] 1546번: 평균 | C++ 풀이

# 문제 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. # 풀이 1차원 배열의 마지막 문제다. 그렇지만 아주아주 간단한 문제! 정답 소스코드를 보며 필요한 개념을 정리해보자. #include using namespace std; int main(){ int n; int max = 0; double sum = 0; cin >> n; double score[n]; for(int i=0; i> score[i]; if(max < score[i]) max = score[i]; } for(int i=0; i score[i]; if(max < score[i]) max = score[i]; } 세준이의 현재 성적과 새롭게 구할 성적을 같은 배열에 넣기 위해 double ..

백준/C++ 2023.05.16

[백준] 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
728x90