본문 바로가기

Algorithm Problems/구현

(13)
[백준/C++] 13909번: 창문 닫기 문제https://www.acmicpc.net/problem/13909문제 요약N개의 창문이 있고, N명의 사람이 있다. 차례대로 1번부터 N번째 사람이 N의 배수 번째 창문을 열려 있으면 닫고, 닫혀 있으면 연다. 마지막으로 열려 있는 창문의 개수를 출력한다.코드#include using namespace std;int main() { int num; cin >> num; if (num 코드 설명과정이 잘 이해가 안가서 직접 손으로 그려보았다. 0이 2번, 4번, 6번, 8번 이런 식으로 반복되고, 1이 찍히는 것을 알 수 있어서 코드로 구현했다..고찰뭔가 이상해서 다시 봤더니, 1, 4, 9, 16, ... 제곱수에 해당하는 번호에 1이 찍힌다는 사실을 알게 되었다. ㅠㅠ
[백준/C++] 1244번: 스위치 켜고 끄기 문제https://www.acmicpc.net/problem/1244문제 요약1부터 연속적으로 번호가 붙어 있는 스위치들이 있다. '1'은 스위치가 켜져 있음을, '0'은 꺼져 있음을 나타낸다. 학생 몇 명을 뽑아 자연수를 하나씩 나누어 준다. 학생들은 자신의 성별과 받은 수에 따라 스위치들을 조작한다. 남학생은 스위치 번호가 자기가 받은 수의 배수이면, 해당 스위치 상태를 바꾼다. 여학생은 자기가 받은 수와 같은 번호의 스위치를 중심으로 좌우가 대칭이면서,가장 많은 스위치를 포함하는 구간을 찾아 그 구간에 속한 스위치 상태를 모두 바꾼다.코드#include #include using namespace std;// 스위치 개수int switch_cnt;// 스위치 상태int switch_state[110..
[백준/C++] 1251번: 단어 나누기 문제https://www.acmicpc.net/problem/1251문제 요약알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 진행한다. 1. 단어에서 임의의 두 부분을 골라 단어를 쪼갠다.(각각은 적어도 길이가 1이상인 단어이다.) 2. 나누어진 세 개의 작은 단어들을 앞뒤로 뒤집고, 원래의 순서대로 합친다. 위 과정의 결과 문자열 중 사전 순으로 가장 앞서는 단어를 출력한다.코드#include #include #include using namespace std;string str;string first_str;string second_str;string third_str;string res = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";in..
[백준/C++] 4072번: Words 문제https://www.acmicpc.net/problem/4072문제 요약문장을 한 줄씩 입력 받고, 공백을 기준으로 각 단어를 뒤집어서 문장을 출력한다. "#"을 입력 받으면 종료한다.코드#include #include #include #include using namespace std;int main() { while (true) { string str; // 공백 포함 입력 받기 getline(cin, str); if (str == "#") break; // String을 StringStream 형으로 변환한 strs 선언 stringstream strs(str); string tmp; // strs 에서 " " 단위로 하나씩 추출하여 tmp에 저장 while (strs >> ..
[백준/C++] 4447번: 좋은놈 나쁜놈 문제 https://www.acmicpc.net/problem/4447 4447번: 좋은놈 나쁜놈 비키니시티에는 초능력을 가진 수퍼 히어로들로 바글바글하다. 스폰지밥과 패트릭은 주어진 문자열로 좋은놈과 나쁜놈을 골라내려 한다. 스폰지밥: 우와, 문자열에서 강한 힘이 느껴지는데! www.acmicpc.net 문제 요약 n개의 문자열을 입력 받는다. 문자열에 g, b가 몇 번 들어있는지 세고, 적절한 문자열을 출력한다. 1. g가 더 많을 경우, '문자열 is GOOD'을 출력한다. 2. b가 더 많을 경우, '문자열 is A BADDY'를 출력한다. 3. 같을 경우, '문자열 is NEUTRAL'을 출력한다. 코드 #include #include using namespace std; int n; void ..
[백준/C++] 1718번: 암호 문제 https://www.acmicpc.net/problem/1718 1718번: 암호 Vigenere cipher이라는 암호화 방법은 암호화하려는 문장 (평문)의 단어와 암호화 키를 숫자로 바꾼 다음, 평문의 단어에 해당하는 숫자에 암호 키에 해당하는 숫자를 더하는 방식이다. 이 방법을 변 www.acmicpc.net 문제 요약 '암호화 키'와 '평문'이 주어졌을 때, 암호문을 출력한다. 암호문의 i번째 문자는 평문의 i번째 문자를 암호화 키의 i번째 문자의 알파벳 상 순서만큼 앞으로 돌린 문자이다. + 암호화 키는 평문의 길이만큼 반복된다. + 앞으로 돌렸을 때, 'a'보다 앞의 문자라면, 'z'으로 돌아가 반복된다. 코드 #include #include #include using namespace..