목록C++ (14)
기록방
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cGzHJw/btrDVjHZk8O/Jfpj6oje5aydSkVJ1IxgDk/img.png)
👉 문제링크 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 🔸 문제 분석 🔸 땅 크기(N)와 인구 최소, 최대값(L,R)이 주어지고, 2차원 배열 형태의 인구수가 주어진다. 인구수의 차이가 L, R 값 사이라면, 국경선을 연다. 국경선이 열려서 통행이 가능한 나라들을 한 그룹으로 묶는다. 한 그룹의 평균 인구수를 그룹내 모든 칸에 채운다. (인구를 평준화한다) 이 평준화 작업은 BFS로 구현하면 될 것 같다. 국경선이 한 곳이라도 열렸다면, 인구 이동이 있으므로 하루가 지나야 한다. 🔸 코드 🔸..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bUrJMv/btrDTqHL7OR/VzEVHOld4kaLxyT5WmqMF0/img.png)
👉 문제링크 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 🔸 문제 분석 🔸 문제가 좀 길었지만 어려운 조건은 아니다. 4가지 톱니가 있는데, 그 중 하나를 돌렸을때 다른 톱니 상태가 어떻게 변하는지 구하면 된다. 각 톱니 상태는 vector 를 쓰면 될 것 같고, 옆 톱니에게 영향을 주는 것은 마치 BFS의 원리와 비슷한 것 같아서 queue를 사용했더니 쉽게 풀렸다. 🔸 코드 🔸 #include #include #include #include using namespace std; void turn(v..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cH0Zbx/btrDOy6Hp18/PNi3xRdeSLKyxu7kgoSKkk/img.png)
👉 문제링크 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 🔸 문제 분석 🔸 입력받은 숫자가 앞 뒤로 대칭인지 확인하는 문제이다. 🔸 코드 🔸 #include #include using namespace std; int main(void) { string input; while (true) { cin >> input; if (input == "0") break; bool flag = true; int size = input.length(); for (int i = 0; i < size/2; i++) { if (input[i..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/9WAQ8/btrDQyxeys0/ku083scUOkX94JhrVtYmAK/img.png)
👉 문제링크 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'
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btzGNH/btrDPCAibjq/Q2SCP0WZs3FSZNOTj0e7kK/img.png)
👉 문제링크 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)..