Programing 183

[C++][백준 9017] 크로스 컨트리

https://www.acmicpc.net/problem/9017풀이문제를 잘못 이해해서 엄청나게 삽질했던 문제...1. 선수가 6명이 되지 않으면 점수를 받지 않는다. 2. 1~4등까지의 점수 합으로 우승팀을 구한다. 만약 점수합이 같다면 5등의 점수가 더 적은 팀이 우승한다.위 두 조건을 잘 챙겨서 작성해 주면 된다제출 코드#include using namespace std;int arr[1001];int teamMem[201];int teamScr[201];int teamCnt[201];int fifthPlayer[201];int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t, n; cin >> t..

[C++][백준 10709] 기상캐스터

https://www.acmicpc.net/problem/10709 풀이만약 각 구역의 문자가 'c'라면 0을 출력하고, 구름이 출발했다는 의미로 구름이 지나온 시간을 0으로 설정한다만약 각 구역의 문자가 '.'인데 구름이 지나온 시간이 0보다 작다면 구름이 출발하지 않았다는 의미이므로 -1을 출력한다각 구역의 문자가 '.'인데 구름이 지나온 시간이 0 이상이라면 지나온 시간을 출력한다 위와 같이 세 케이스로 나누어 코드를 작성하였다 제출 코드#include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int h, w; string input; cin >> h >>..

[C++][백준 20546] 기적의 매매법

https://www.acmicpc.net/problem/20546 풀이flag 변수를 두어 가격이 전일 대비 하락/상승한 연속 일자를 기록할 수 있도록 하였다 제출 코드#include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int j[2] = {}; int s[2] = {}; int cash; cin >> cash; j[0] = cash; s[0] = cash; int flag = 0; int prev; int stock; for (int i = 0; i > stock; j[1] += j[0] / stock;..

[C++][백준 9935] 문자열 폭발

https://www.acmicpc.net/problem/9935풀이입력받은 문자열을 char 단위로 응답할 새로운 문자열에 추가시켜준다만약 폭발 문자열의 마지막 문자를 추가했다면, 해당 문자열의 앞부분을 확인해서 폭발 문자열이 존재할 경우 없애준다 제출 코드#include #include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); string str, explode, res = ""; cin >> str >> explode; int len = explode.length(); char lastChar = explode.back(); for (int i ..

[C++][백준 20437] 문자열 게임 2

https://www.acmicpc.net/problem/20437풀이각 알파벳(a~z)이 등장하는 위치를 저장해두고,k개씩 묶어서 min값과 max값을 비교하여 갱신한다 만약 위치가 저장된 벡터의 사이즈(저장된 개수)가 k보다 작으면 그냥 넘긴다이때, 모든 알파벳들이 전부 k보다 작으면 "-1"을 출력하기 위해 bool 타입 변수를 두어 이를 체크한다 각 알파벳마다 위치가 저장된 vector에서 길이 k의 윈도우를 한 칸씩 오른쪽으로 이동시켜가며 최대 최소값을 구해준다위와 같은 방식이다 제출 코드#include #include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); i..

[C++][백준 1522] 문자열 교환

https://www.acmicpc.net/problem/1522풀이직접 교환을 진행하는 것보단 최소 횟수로 교환이 진행된 문자열과 비교를 통해 총 몇 번 교환해야 하는지를 알아내는 방식이 나을 것 같았다(풀고 나서 알았지만 이와 같은 방식을 슬라이딩 윈도우 알고리즘이라고 한다) 입력받은 문자열에서 a만 남긴 문자열을 만들어주고, 해당 문자열을 오른쪽으로 한 칸씩 이동시켜가며 입력받은 문자열과 일대일로 비교하며 다를 경우 count를 올려준다 문자열의 끝은 서로 연결되어 있다고 가정하기 때문에 만약 문자열의 길이를 넘어간 인덱스에 접근할 차례면 앞으로 보내준다이런 식으로 한 칸씩 이동해 가면서 요소들을 비교하는 식으로 진행하였다오른쪽으로 계속 이동하다 문자열의 길이를 넘어가는 경우 위와 같이 비교한다 최..

[C++][백준 20291] 파일 정리

https://www.acmicpc.net/problem/20291 제출 코드#include #include #include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; map m; while(n--) { string str; cin >> str; m[str.substr(str.find('.') + 1)]++; } for (auto res : m) cout C++에서 문자열을 특정 기준으로 나눌 때 substr(시작 위치, 길이) 함수를 사용할 수 있다* 길이: 시..