-
[BOJ] 16172 : 나는 친구가 적다 (Large)
16172 : 나는 친구가 적다 (Large) 풀이 kmp 잘 짜주면 된다. 코드 #include <iostream> #include <string> using namespace std; int fail[200022]; string a, t, p; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> a >> p; for (auto it : a) if (it < '0' || it > '9') t.push_back(it); for (int i = 1, j = 0; i < p.length(); ++i) { while (j && p[i] != p[j]) j = fail[j - 1]; if (p[i]...
-
[BOJ] 16171 : 나는 친구가 적다 (Small)
16171 : 나는 친구가 적다 (Small) 풀이 잘 짜주면 된다. 근데 그냥 16172번 복붙했다. 코드 #include <iostream> #include <string> using namespace std; int fail[200022]; string a, t, p; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> a >> p; for (auto it : a) if (it < '0' || it > '9') t.push_back(it); for (int i = 1, j = 0; i < p.length(); ++i) { while (j && p[i] != p[j]) j = fail[j -...
-
[BOJ] 16165 : 걸그룹 마스터 준석이
16165 : 걸그룹 마스터 준석이 풀이 잘 짜주면 된다. 코드 #include <iostream> #include <string> #include <map> using namespace std; int n, m, num; string grp, str; map<string, string> mp; int main() { cin.tie(0); ios_base::sync_with_stdio(0); cin >> n >> m; while (n--) { cin >> grp >> num; while (num--) { cin >> str; mp[grp] = str; mp[str] = grp; } } while (m--) { cin >> str >> num; if (!num) for (auto it :...
-
[BOJ] 16113 : 시그널
16113 : 시그널 풀이 잘 짜면 된다 코드 #include <cstdio> #include <cstring> int n, r[100003]; char a[100003], s[20005][5]; int isone(int x) { for (int i = 0; i < 5; i++) if (s[x][i] == '.' || s[x+1][i] == '#') return 0; return 1; } int count(int x) { int ret = 0; for (int i = x; i < x+3; i++) for (int j = 0; j < 5; j++) ret += s[i][j] == '.';...
-
[BOJ] 10546 : 배부른 마라토너
COCI 2014/2015 Contest #2 2번 10546 : 배부른 마라토너 10546 : UTRKA 풀이 map 써도 되고 이렇게 짜도 된다 코드 #include <cstdio> int n, i; char a[22], s[22]; int main() { scanf("%d", &n); n *= 2; for (n--; n--;) { scanf("%s", s); for (i = 0; s[i]; i++) a[i] ^= s[i]; } printf("%s", a); return 0; } 아무말 백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조,...
-
[BOJ] 1371 : 가장 많은 글자
1371 : 가장 많은 글자 풀이 어디에도 그대가 살아서 코드 #include <cstdio> int ans, cnt[33]; char c; int main() { while (~scanf("%c", &c)) cnt[c - 'a']++; for (c = 0; c < 26; c++) ans = ans > cnt[c] ? ans : cnt[c]; for (c = 0; c < 26; c++) if (cnt[c] == ans) printf("%c", c + 'a'); return 0; } 아무말 백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠,...
-
[BOJ] 3449 : 해밍 거리
3449 : 해밍 거리 풀이 끄아아아아 코드 #include <iostream> #include <string> using namespace std; int n; string a, b; int main() { cin.tie(0); ios_base::sync_with_stdio(0); cin >> n; while (n--) { int r = 0; cin >> a >> b; for (int i = 0; i < a.size(); i++) if (a[i] != b[i]) r++; cout << "Hamming distance is " << r << ".\n"; } return 0; } 아무말 백준, 백준 온라인 저지, BOJ, Baekjoon Online...
-
[BOJ] 1302 : 베스트셀러
1302 : 베스트셀러 풀이 다정했던 사람이여 나를 잊었나 벌써 나를 잊어버렸나 코드 #include <iostream> #include <string> #include <map> using namespace std; int n, rn; string s, rs; map<string, int> m; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; while (n--) cin >> s, m[s]++; for (auto it : m) if (rn < it.second) rn = it.second, rs = it.first; cout << rs; return 0; } 아무말 백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C,...
-
[BOJ] 1120 : 문자열
1120 : 문자열 풀이 그리디하게 풀어보자. a의 길이가 b보다 짧으므로 a[i] != b[j]의 개수가 가장 짧은 구간을 택하면 아무 문자나 양옆으로 붙일 수 있으므로 최소의 a[i] != b[j] 합이 답이 된다. 코드 #include <cstdio> #include <cstring> char a[55], b[55]; int alen, blen, sum, min = 1e9, i, j; int main() { scanf("%s %s", a, b); alen = strlen(a); for (; b[i + alen - 1]; i++, sum = 0) { for (j = 0; a[j];...
-
[BOJ] 1493 : 박스 채우기
1493 : 박스 채우기 풀이 ! 큐브러버님 코드 참고했습니다 ! 가장 큰 큐브부터 사용해서 박스를 채워야 하는 것은 증명할 것도 없이 자명하다. 부피로 으쌰으쌰 슥삭슥삭 멋있게 잘 계산해서 빈 공간을 잘 채워넣으면 된다. 사용했던 큐브를 보다 작은 단위로 쪼개나가자. 1*1*1 단위까지 쪼개지면, 그 큐브의 개수가 박스의 부피와 같은지를 비교해주자. 코드 #include <cstdio> #include <algorithm> typedef long long ll; int l, w, h, n; int a[22]; ll cnt, ans; int main() { scanf("%d %d %d %d",...
-
[BOJ] 12025 : 장난꾸러기 영훈
12025 : 장난꾸러기 영훈 풀이 아 9시 수업 에반데 코드 #include <stdio.h> long long i, k; char s[66]; int main() { scanf("%s %lld", s, &k); k--; for (i = 0; s[i]; i++) { if (s[i] == '6' || s[i] == '7') s[i] -= 5; } while (i--) { if (s[i] == '1' || s[i] == '2') { if (k & 1) s[i] += 5; k >>= 1; } } puts(k ? "-1" : s); return...
-
[BOJ] 1969 : DNA
1969 : DNA 풀이 음 사실 그리디인지는 잘 모르겠고 그냥 나이브하게 짜면 된다. 코드 #include <stdio.h> int n, m, d, cnt[51][26]; char s[1001][51], r[1001]; int main() { scanf("%d %d", &n, &m); for (int i = 0; i < n; i++) { scanf("%s", s[i]); for (int j = 0; j < m; j++) cnt[j][s[i][j] - 'A']++; } for (int i = 0; i < m; i++) { int mx = 0; for (int j = 0;...
-
[BOJ] 1793 : 타일링
1793 : 타일링 풀이 타일링 가즈아~~~!!! 코드 #include <iostream> #include <string> #include <algorithm> using namespace std; int n; string dp[255] = { "1", "1" }; string deohagi(string a, string b) { int sum = 0; string res; while (!a.empty() || !b.empty() || sum) { if (!a.empty()) sum += a.back() - '0', a.pop_back(); if (!b.empty()) sum += b.back() - '0', b.pop_back(); res.push_back((sum % 10) + '0'); sum /= 10; } reverse(res.begin(), res.end()); return res; } int...
-
[BOJ] 10757 : 큰 수 A+B
10757 : 큰 수 A+B 풀이 더하기 가즈아~! 코드 #include <iostream> #include <string> #include <algorithm> using namespace std; string deohagi(string a, string b) { int sum = 0; string res; while (!a.empty() || !b.empty() || sum) { if (!a.empty()) sum += a.back() - '0', a.pop_back(); if (!b.empty()) sum += b.back() - '0', b.pop_back(); res.push_back((sum % 10) + '0'); sum /= 10; } reverse(res.begin(), res.end()); return res; } int main() { cin.tie(0); ios_base::sync_with_stdio(0); string a, b;...
-
[BOJ] 1159 : 농구 경기
1159 : 농구 경기 풀이 사실 그냥 체킹 배열에 카운트 해줘도 되는데 map 안 쓴지가 오래돼서 써봤다 ㅎㅎ 코드 #include <cstdio> #include <map> using namespace std; int n; char a[155]; map<char, int> s; int main() { scanf("%d", &n); while (n--) scanf("%s", a), s[a[0]]++; for (auto it : s) if (it.second >= 5) putchar(it.first), n++; if (n == -1) printf("%s", "PREDAJA"); return 0; } 아무말 백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨,...
-
[BOJ] 2941 : 크로아티아 알파벳
2941 : 크로아티아 알파벳 풀이 쿵짝쿵짝 쿵짜라 코드 #include <stdio.h> #include <string.h> int i, c; char s[111]; int main() { scanf("%s", s); while (i < strlen(s)) { if (s[i] == 'c' && (s[i+1] == '=' || s[i+1] == '-')) i++; else if (s[i] == 'd') { if (s[i+1] == '-') i++; else if (s[i+1] == 'z' && s[i+2] == '=') i+=2; } else if ((s[i] == 'l' || s[i] == 'n') && s[i+1] == 'j')...
-
[BOJ] 1076 : 저항
1076 : 저항 풀이 잘 계산해주자 꺄르륵 코드 #include <iostream> #include <string> using namespace std; int i, j; long long sum; string a, b, c, s[] = {"black","brown","red","orange","yellow","green","blue","violet","grey","white" }; int main() { cin >> a >> b >> c; for (i = 0; i < 10; i++) { if (a == s[i]) sum += i * 10; if (b == s[i]) sum += i; } for (i = 0; i < 10; i++) if (c...
-
[BOJ] 1475 : 방 번호
1475 : 방 번호 풀이 6과 9는 구분없이 사용 가능하므로 그것만 신경써서 카운팅 해주면 된다 코드 #include <stdio.h> #include <string.h> #define max(a,b) (a)>(b)?(a):(b) int ans, tmp, cnt[10]; char str[10]; int main() { scanf("%s", str); for (int i = 0; i < strlen(str); i++) cnt[str[i] - '0']++; for (int i = 0; i <= 9; i++) if (i != 6 && i != 9) ans = max(ans, cnt[i]); ans = max(ans, (cnt[6] + cnt[9] + 1)...
-
[BOJ] 2784 : 가로 세로 퍼즐
2784 : 가로 세로 퍼즐 풀이 n 제한이 굉장히 작으므로 naive하게 그냥 다 돌려보면 된다! 코드 #include <iostream> #include <string> #include <algorithm> using namespace std; string pzl[3], wrd[6]; void wookje() { bool chk[6] = { 0 }; int cnt = 0; for (int k = 0; k < 3; k++) { for (int i = 0; i < 6; i++) { if (!chk[i] && pzl[k] == wrd[i]) { chk[i] = 1, cnt++; break; } }...
-
[BOJ] 1316 : 그룹 단어 체커
1316 : 그룹 단어 체커 풀이 i번째 문자와 i-1번째 문자가 같다면 둘은 연속된 문자이므로 같은 그룹에 속한다. 단어가 그룹에 속해있지 않는 경우는 이미 앞에서 동일한 문자가 나왔고, i번째 문자와 i-1번째 문자가 다른 경우이다. 체킹 배열을 만들어서 체크해주자! 코드 #include <iostream> #include <string> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); int tc, ans = 0; string str; cin >> tc; while (tc--) { bool chk[26] = { 0 }, flg = 0; cin >> str;...
-
[BOJ] 11507 : 카드셋트
11507 : 카드셋트 풀이 ㅎㅎ 코드 #include <stdio.h> int a, b, cnt[4]; bool chk[14][4]; int main() { for (char c; ~scanf("%c%1d%1d", &c, &a, &b);) { a = a * 10 + b; switch (c) { case 'P': c = 0; break; case 'K': c = 1; break; case 'H': c = 2; break; case 'T': c = 3; } if (chk[a][c]) { puts("GRESKA"); return 0; } chk[a][c] = 1, cnt[c]++; } for (int i =...
-
[BOJ] 1411 : 비슷한 단어
1411 : 비슷한 단어 풀이 뭔가 번역이 좀 애매한 것 같은데 a->b면 b->a도 당연히 성립할 줄 알았더니 a->b만 성립하면 되는 문제였다 (…) 단순 구현 문제이다. 코드 #include <iostream> #include <string> using namespace std; int n, i, j, k, ans; string str[101]; int main() { scanf("%d", &n); for (i = 0; i < n; i++) cin >> str[i]; for (i = 0; i < n - 1; i++) for (j = i + 1; j <...
-
[BOJ] 1605 : 반복 부분문자열
1605 : 반복 부분문자열 풀이 suffix array practice 코드 #include <bits/stdc++.h> using namespace std; const int MAXN = 2e5 + 10; int n, ans; int suf[MAXN], rev[MAXN]; char str[MAXN]; void cntsort(vector<int>& ord, int m) { int i; vector<int> cnt(m + 1, 0), tmp(n + 1); for (i = 0; i < n; i++) cnt[ord[i]]++; for (i = 1; i <= m; i++) cnt[i] += cnt[i - 1]; for (i = n; i--;) tmp[--cnt[ord[suf[i]]]] = suf[i];...
-
[BOJ] 12904 : A와 B
12904번: A와 B 풀이 직접 시뮬레이션 해보면 된다! 코드 #include <bits/stdc++.h> using namespace std; string S, T; void reverse(string K) { for (int i = 0; i < K.length(); ++i) T[K.length() - i - 1] = K[i]; } int main() { cin >> S >> T; int flag = 0; while (true) { if (S.length() == T.length()) { if (!S.compare(T)) flag = 1; break; } int len = T.length() - 1; char now = T[len];...
-
[BOJ] 1786 : 찾기
1786 : 찾기 풀이 KMP 룰루랄라 코드 #include <stdio.h> #include <vector> #include <string.h> using namespace std; const int N_ = 1e6 + 5; int fail[N_], t_len, p_len; char T[N_], P[N_]; int main() { gets_s(T); t_len = strlen(T); gets_s(P); p_len = strlen(P); for (int i = 1, j = 0; i < p_len; ++i) { while (j && P[i] != P[j]) j = fail[j - 1]; if (P[i] == P[j]) fail[i] = ++j; } vector<int> ans;...
-
[BOJ] 1701 : Cubeditor
1701 : Cubeditor 풀이 Naive한 풀이 룰루랄라 코드 #include <bits/stdc++.h> using namespace std; int ans, cnt; char str[5001]; vector<string> suf; int main() { scanf("%s", str); for (int i = 0; i < strlen(str); ++i) { suf.push_back(str + i); } sort(suf.begin(), suf.end()); for (int i = 0; i < suf.size() - 1; ++i) { while (suf[i][cnt] == suf[i + 1][cnt]) ++cnt; ans = max(ans, cnt); cnt = 0; } printf("%d", ans); return 0; } 아무말 백준,...