백준 문제와 소스 코드(86)
-
[코테 스터디] 1676번. 팩토리얼 0의 개수
문제 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 출력 첫째 줄에 구한 0의 개수를 출력한다. 예제 입력1 10 예제 출력1 2 예제 입력2 3 예제 출력2 0 문제 해결 방법 1.0의 개수를 찾아내는 것은 전체를 곱했을 때 10의 몇승인지를 찾아내는 것과 같다. 2. 10은 소수인 2와 5의 곱으로 나타나는데, 잘 생각해보면 N까지 5의 개수를 찾아내는 것과 똑같다. 3. N을 계속 5로 나누고 나온 몫들의 합을 구한다. 코드 #in..
2024.03.20 -
003. 구간 합 구하기 1 (구간 합, 배열 초기화, C++ 시간 단축, endl '\n' 차이)
문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 예제 입력1 5 3 5 4 3 2 1 1 3 2 4 5 5 예제 출력1 12 9 1 문제 해결 방법 1. 배열을 0으로 초기화 하기 위하여 배열을 선언하고 {}로 초기화한다. !! Java나 C#에서는 초기화하지 않으면 0으로 값이 자동으로 주어지나 C++에서는 초기화 해줘야 함. !! 2. 여러 구간의 합을 ..
2024.03.10 -
002. 평균 (식의 간단화 및 형변환)
문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 출력 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대..
2024.03.10 -
001. 숫자의 합 구하기 (문자 -> 숫자 혹은 숫자 -> 문자)
문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 출력 입력으로 주어진 숫자 N개의 합을 출력한다. 예제 입력1 1 1 예제 출력1 1 예제 입력2 5 54321 예제 출력2 15 예제 입력3 11 10987654321 예제 출력3 46 문제 해결 방법 1. N개의 숫자를 받을 때 전부 다 받기 위해선 문자열로 받아야 한다 (string 사용) 2. 사용해야 하는 변수 선언하기 (N, 문자열, 합 변수) 3. 문자열의 문자 하나하나를 숫자로 바꾸어서 합에다가 더해준다. 4. 문자를 아스키 코드를 이용해서 '0' 문자와 뺴서 숫자로 만드는 아이디어를..
2024.03.08 -
Week 8 (그리디 알고리즘) - 문제 1541번 (잃어버린 괄호)
문제: 세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다. 그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다. 괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오. 입력: 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다. 출력: 첫째 줄에 정답을 출력한다. 예제 입력1: 55-50+40 예제 출력1: -35 예제 입력2: 10+20+30+40 예제 출..
2023.08.30 -
Week 8 (그리디 알고리즘) - 문제 2847번 (게임을 만든 동준이)
문제: 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어의 점수는 레벨을 클리어하면서 얻은 점수의 합으로, 이 점수를 바탕으로 온라인 순위를 매긴다. 동준이는 레벨을 난이도 순으로 배치했다. 하지만, 실수로 쉬운 레벨이 어려운 레벨보다 점수를 많이 받는 경우를 만들었다. 이 문제를 해결하기 위해 동준이는 특정 레벨의 점수를 감소시키려고 한다. 이렇게해서 각 레벨을 클리어할 때 주는 점수가 증가하게 만들려고 한다. 각 레벨을 클리어할 때 얻는 점수가 주어졌을 때, 몇 번 감소시키면 되는지 구하는 프로그램을 작성하시오. 점수는 항상 양수이어야 하고, 1만큼 감소시키는 것이..
2023.08.28