C++ - 백준 [BAEK JOON]
[백준] 8958번 : OX퀴즈 - [C++]
[백준] 8958번 : OX퀴즈 - [C++]
2021.12.09https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 문제 이 번 문제도 그리 어렵지는 않을 것이다. 필자가 보기엔 입력받은 문자열을 어떻게 다루느냐를 이해하고자 하는 의도가 아닐까 싶다. 알고리즘 [접근 방법] 문제를 이해하는 것은 그리 어렵지 않을 것이다. 우리는 두 가지 규칙만 따르면 된다. 각 케이스마다 점수를 출력한다. O 의 연속 개수 만큼 점수를 누적하여 합산하고 X가 나오면 누적값은 0으로 초기화 된다. 즉, X혹은..
[백준] 1546번 : 평균 - [C++]
[백준] 1546번 : 평균 - [C++]
2021.10.20https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 문제 이 번에는 평균을 구하는 문제다. 다만, 약간 특수한 성적 조작 평균을 구하는... 알고리즘 [접근 방법] 문제 자체는 그리 어렵지 않을 것이다. 약간의 특수한 수식이 필요한데, 일단 요구되는 조건은 주어지는 값들 중 가장 큰 값을 찾는 것. (이를 M이라고 함) 그리고 조작 된 성적을 구하는 수식은 다음과 같다. 조작 된 성적 = ( 단일 과목 / M ) * 100 그러면 평균은 다음..
[백준] 3052번 : 나머지 - [C++]
[백준] 3052번 : 나머지 - [C++]
2021.10.06https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 문제 알고리즘 [접근 방법] 직전 문제인 숫자의 개수 문제를 푼다면 그리 어렵지 않게 풀 수 있는 문제다. 사실 문제 자체는 숫자의 개수와 거의 다르지 않고, 다만 나머지를 구해줄 뿐이니.. 그리 어렵지 않게 풀 수 있을 것이다. 혹시 해당 문제를 풀고오지 않았다면 아래 링크를 통해 먼저 풀어 보고 오시는 것을 추천한다. https://st-lab.tistory.com/271 [백준] 2577번 : 숫자의 개수 - [C++] https://www.acmicpc.net..
[백준] 2577번 : 숫자의 개수 - [C++]
[백준] 2577번 : 숫자의 개수 - [C++]
2021.09.27https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 문제 이 번 문제는 그리 어렵지 않은 문제다. 다양한 풀이 법을 통해 접근해보도록 하자. 알고리즘 [접근 방법] 워낙 풀이 방법이야 다양하기 때문에 앞으로 다른 문제들을 풀어나가면서 많이 쓰게 될 방법들을 미리 터득할 겸 크게 두 가지 방식으로 접근해보고자 한다. 문제 본문은 길지만, 핵심은 하나다. 3개의 수를 곱한 수에 대해 각 자릿수들이 0~9까지 각각 몇 번 나왔는지를 출력하면 되는 문제다. 그러면 어떻게 풀이해야 할까? 바로 배열의 인덱스를 ..
[백준] 2562번 : 최댓값 - [C++]
[백준] 2562번 : 최댓값 - [C++]
2021.08.17https://www.acmicpc.net/problem/2562 2562번: 최댓값 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어 www.acmicpc.net 문제 그리 어려운 문제는 아니다. 아마 많은 분들은 쉽게 풀었을 것 같다. 알고리즘 [접근 방법] 이 문제 자체는 어렵지 않다. 총 9개의 서로 다른 자연수가 주어지면, 주어진 수에서 최댓값과 그 최댓값이 몇 번째로 주어졌는지를 출력하면 되는 문제다. 다만, 유의해야 할 점이라면 배열을 정렬을 시켜버리면 안된다. 우리가 출력해야 하는 건, 최댓값과 최댓값이 몇 번째..
[백준] 10818번 : 최소, 최대 - [C++]
[백준] 10818번 : 최소, 최대 - [C++]
2021.07.23https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 1차원 배열 카테고리의 첫 문제다. 그리 어려운 것은 아닌지라 쉽게 푸실 수 있을 것이다. 알고리즘 [접근 방법] 배열에 대해 이미 알고있다면 이 문제는 그렇게 어렵지는 않은 문제다. 사실 최소, 최대를 찾는다면 배열을 쓸 필요가 없기도 하다. 하지만, 배열의 첫 카테고리인만큼 배열로 먼저 접근해서 풀어보고, 그 다음 마지막으로 배열을 쓰지 않고 푸는 방식..
[백준] 1110번 : 더하기 사이클 - [C++]
[백준] 1110번 : 더하기 사이클 - [C++]
2021.07.06https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 문제 그리 어려운 문제는 아닐 것이다. 조금만 문제를 자세히 살펴보면 쉽게 풀 수 있다. 알고리즘 [접근 방법] 문제 원리는 간단하다. 1. 1의 자릿수는 10의 자리수가 된다. 2. 각 자릿수의 값을 더한 결과의 1의 자릿수는 1의 자리수가 된다. 3. 위 과정을 통해 얻은 결과가 초기에 주어진 수랑 같을 때 까지 반복한다. 이 세 개만 찾아내면 된다. 쉽게 말해 아래 이미지와 같..
[백준] 10951번 : A + B - 4 - [C++]
[백준] 10951번 : A + B - 4 - [C++]
2021.06.29https://www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 이 전 문제인 A+B - 5와 문제가 같아보이나 이 번 문제는 유의해야 할 점이 있다. 알고리즘 [접근 방법] 이 번 문제의 키 포인트는 문제를 자세히 보면 몇 개를 입력받는지 알 수 없다는 것이다. 이렇게 주어진 입력 파일만 갖고 입력을 받을 때 더이상 읽을 수 있는 데이터가 없는 경우 즉, 파일의 끝일 때 이를 EOF(End Of File) 이라고 한다. 위 문제를 본다면 입력에서 더이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문을 종료하라는 것이다. (참고로 우리는 일상적으로 문장의 끝을..
[백준] 10952번 : A+B - 5 - [C++]
[백준] 10952번 : A+B - 5 - [C++]
2021.06.13https://www.acmicpc.net/problem/10952 10952번: A+B - 5 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 새로운 카테고리인 while 문의 첫 문제다. 알고리즘 [접근 방법] 만약 while문을 다뤄보았다면 모두가 쉽게 풀 수 있었을 것이다. 기본적으로 for문과 유사하게 반복문이라는 메커니즘을 갖고있지만 조금은 양식이 다르다. 그동안 배웠던 for문은 기본 형식이 다음과 같았다. 반면에 while문은 형태가 조금 더 간단하다. 두 개의 반복문은 본질적으로 그렇게 큰 차이는 없지만 for문은 초기식에 따른 변수에 따라 조건식을 검사하기 때문에 좀 더 유연하게 활용할 수 있고, 반면에 while문은 단순한..
[백준] 10871번 : X보다 작은 수 - [C++]
[백준] 10871번 : X보다 작은 수 - [C++]
2021.06.03https://www.acmicpc.net/problem/10871 10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 그리 어렵지 않은 문제다. 알고리즘 [접근 방법] 반복문 카테고리의 마지막 문제다. 이쯤오면 아마 대부분 반복문 사용 방법은 익히셨을 것이다. 그래서 이 문제는 크게 설명할 것이 없다. N개의 수를 입력을 받은 뒤, 해당 수들 중에서 X보다 작은 수들을 출력해주면 되는 문제다. 크게 풀이방법은 2 가지가 있는데, 먼저 배열을 사용하여 풀이하는 방법과 입력과 동시에 if 조건절..