smooth waters run deep

1d-1c 105

10809_알파벳 찾기 (C++)

10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net #include #include using namespace std; int main() { int alpha[26] = { 0, }; int visited[26] = { 0, }; string S; cin >> S; for (int i = 0; i < S.length(); i++) { char cur = S.at(i); //S의 i번째 알파벳 int cur_int = (int)cur - 97; //알파벳a == 숫자0 으로 계산 if (!visite..

1d-1c/BOJ 2020.08.25

4673_셀프 넘버 (C++)

4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net #include using namespace std; int visited[10001] = { 0, }; //방문 확인 void dfs(int num) { int temp = num; while (num) { int n = num % 10; temp += n; num /= 10; } if (temp

1d-1c/BOJ 2020.08.24

8958_OX퀴즈 (C++)

8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net #include #include using namespace std; int main() { int n; cin >> n; vector v; string str; for (int i = 0; i > str; v.push_back(str); } for (int i = 0; i < n; i++) { int cnt = 0, ans = 0; for (int j = 0; j < v[i].size(); j++) { if (..

1d-1c/BOJ 2020.08.17

[백준] 1051_숫자정사각형 (Silver3) (C++)

어떻게 하면 더 똑똑하게 풀 수 있을까 고민했는데 bruce force 방법 뿐이었다. 문제 해결에 필요한 부분은 진작에 완성했는데 계속 '틀렸습니다!'가 떠서.. '맞았습니다!'까지 한참 걸렸다. 이유는 입력받는 데에 문제가 있다는 걸 캐치하지 못했기 때문!! "C++에서 제공하는 정수형으로는 길이 50의 정수를 입력받을 수 없습니다. 일단 문자열로 입력받은 후에 직접 원하는 타입으로 가공해야 합니다." 라는 게시판 속 해결사 댓글을 보고 드디어 '맞았습니다' (코드 속 12-17 부분) 문제에서 일부러 50까지 입력을 받으려고 했나하는 생각이 들었다. 나한테는 무시무시한 함정이었다.. ** 잊지말자 !! 문자열 -> 숫자 문자 - '0' 숫자 -> 문자열 숫자 + '0' **코드짜면서 생각했던 부분 ..

1d-1c/BOJ 2020.04.26

도둑질 (C++)

코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 programmers.co.kr 처음으로 알고리즘 문제를 풀었다. ** 생각해야될 조건 - 인접한 집은 도둑질이 안된다. - 원 모양이므로, 첫 번째 집-마지막 집 = 인접하다 - i번째 집으로 생각해서 일반식을 만들어야함! ** 코드로 바꾼다면 1. dp[i] : i번째 집까지 털었을 때 최댓값 i-1번째 도둑질 O 경우 : i번째 집을 털 수 X -> dp[i-1] i-1번째 도둑질 X 경우 : i번째 집을 털 수 O -> dp[i-2] + money[i] 그러므로 dp[i] = max( d..

1d-1c/Programmers 2020.04.25