본문 바로가기

반응형

C++/BAEKJOON

(37)
[C++] BAEKJOON (2775) 부녀회장이 될테야 문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. ​ 반면, 이 아파트에 거주를 하려면 계약 조건이 있다. ​ "a 층의 b 호에 살려면 자신의 아래(a-1) 층 1호부터 b 호까지 거주민 수 합만큼의 사람들을 데려와 살아야 한다." ​ 아파트에 비어있는 집은 없고, 모든 거주민들이 이 계약 조건을 지킨다고 가정했을 때 주어지는 양의 정수 k와 n에 대해 k 층, n 호에는 몇 명이 살고 있는지 출력한다. 단, 아파트에는 0층부터 있고, 각 층에는 1호부터 있으며, 0층의 i 호에는 i명이 산다. ​ 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각 케이스의 입력으로 첫 번째 줄에 정수 k, 두 번째 ..
[C++] BAEKJOON (2869) 달팽이는 올라가고 싶다 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V 미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A 미터 올라갈 수 있지만, 밤에 잠을 자는 동안 B 미터 미끄러진다. 그러나 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대의 정상에 도달하려면 며칠이 걸리는지 구하는 프로그램을 작성하시오. 첫째 줄에 A, B, V가 공백으로 구분되어 주어진다. (1 ≤ B 〈 A ≤ V ≤ 1,000,000,000) ​ 첫째 줄에 달팽이가 나무 막대의 정상에 도달하려면 며칠이 걸리는지 출력한다. 결과 #include int main() { int V, A, B; int day = 1; std::cin >> A >> B >> V; if ((V - B) % (A - B) == 0) { std::cout
[C++] BAEKJOON (2941) 크로아티아 알파벳 문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수 없었다. 따라서 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 예를 들어 ljes=njak는 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 그리고 위 목록에 없는 알파벳은 한 글자씩 센다. ​ 첫째 줄에 최대 100글자의 단어가 주어지며, 알파벳 소문자와 '-', '='로만 이루어져 있다. 단어는 크로아티아 알파벳으로 이루어져 있으며, 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다. 입력으로 주어진 단어가 몇 개의 크..
[C++] BAEKJOON (1152) 단어의 개수 문제 영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. ​ 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기가 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다. 첫째 줄에 단어의 개수를 출력한다. 결과 #include // getline() #include #include // std::stringstream int main(void) { std::string str; getline(std::cin, str); ..
[C++] BAEKJOON (1157) 단어 공부 문제 알파벳 대소문자로 이루어진 단어가 주어진다. 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어진 단어의 길이는 1,000,000을 넘지 않는다. 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 '?'를 출력한다. 풀이 #include #include // std::stirng, string.lenght() #include // std::pair #include // std::sort int main(void) { std::string word; std::cin >> word; std::pa..
[C++] BAEKJOON (10809) 알파벳 찾기 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. ​ 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 그리고 각각의 알파벳에 대해서 a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고 두 번째 글자는 1번째 위치이다. 풀이 #include #include const int alphabet = 26; int main(void) { std:..
[C++] BAEKJOON (1065) 한수 문제 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고 N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. ​ 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어지고, 첫째 줄에 1보다 크거나 같고 N보다 작거나 같은 한수의 개수를 출력한다. 풀이 #include #include int count(int N) { int count = 0; for (int i = 1; i > N; std::cout
[C++] BAEKJOON (4673) 셀프 넘버 문제 셀프 넘버는 1949년 인도 수학자 D.R.Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자릿수를 더하는 함수라고 정의하자 예를 들어 d(75) = 75 + 7 + 5 = 87이다. ​ 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))),... 과 같은 무한수열을 만들 수 있다. 예를 들어 33으로 시작했다면 다음 수 d(33) = 33 + 3 + 3 = 39이다. 그다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런 식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... ​ n을 ..

반응형