목록CodingTest (432)
기록방
👉 문제링크 10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있 www.acmicpc.net 🔸 문제 분석 🔸 공백이 포함된 문자열을 한줄 씩 입력받아, 숫자로 변환 후 합을 구하는 문제이다. 🔸 코드 🔸 #include #include using namespace std; int main(void) { string s; while (getline(cin, s)) { int sum[4] = { 0 }; for (char c : s) { if ('a'
👉 문제링크 15351번: 인생 점수 어떤 사람이 무엇을 즐기느냐에 따라 그 사람의 인생 점수를 측정할 수 있다. A를 1점, B를 2점, ... , Z를 26점으로 해, 즐기는 것의 이름의 알파벳 점수를 모두 더하면 된다. 예를 들어, "OTAKU LIFE" 는 www.acmicpc.net 🔸 문제 분석 🔸 공백이 포함된 문자열을 한줄 씩 입력받아, 숫자로 변환 후 합을 구하는 문제이다. 🔸 코드 🔸 #include #include using namespace std; int main(void) { int N, sum; string s; cin >> N; getchar(); for (int i = 0; i < N; i++) { sum = 0; getline(cin, s); for (char c : s)..
👉 문제링크 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 🔸 문제 분석 🔸 문자열의 길이 내림차순 정렬과 사전식 정렬을 같이 적용하는 문제이다. 헤더 의 sort 함수 compare인자를 사용하면 쉽게 풀 수 있다. 🔸 코드 🔸 #include #include #include using namespace std; bool check(std::string& a, std::string& b) { if (a.size() < b.size()) return true; else if (a.size() ==..
👉 문제링크 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 🔸 문제 분석 🔸 N번째 방 까지의 지나는 방의 수는 몇 번째 껍질(?)인지 세면 된다. 벌집은 한겹한겹 늘어날때마다 6배수만큼 늘어난다. 중앙 '1'에서 오른쪽 아래로 내려가면 '7', '19', '37', '61' 인데 증가폭을 보면 6, 12, 18, 24이다. 따라서 최대값을 6의 배수만큼 늘려가며 N이 포함되는지 확인하면 된다. 🔸 코드 🔸 #include using namespace std; int main(void) { int N, count =..
👉 문제링크 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 🔸 문제 분석 🔸 분해합 N : 자연수 M과 그 M의 자릿수를 각각 더해서 나오는 수 >> M은 N의 생성자 생성자가 없는 경우를 생각하다가 1~10의 생성자는 무조건 2배이고 짝수라는 걸 깨달았다. 생성자는 분해합보다 항상 1이상 작은 것 같으니 1부터 입력된 자연수 까지 증가시키며 분해합을 해보면 될 것 같다. 🔸 코드 🔸 #include #include using namespace std; int main(void)..