본문 바로가기

BOJ

BOJ 1018 (체스판 다시 칠하기) #include int min(int a, int b) { if (a > b) return b; else return a; } int main() { int N, M; int res = 1000000; char arr[51][51]; scanf("%d %d", &N, &M); for (int i = 0; i < N; i++) { scanf("%s", arr[i]); } for (int i = 0; i < N - 7; i++) { for (int j = 0; j < M - 7; j++) { int cnt = 0; int num = 0; for (int k = i; k < 8 + i; k++) { for (int l = j; l < 8 + j; l++) { if (arr[i][j] == 'W') { if (.. 더보기
BOJ 1914 (하노이 탑) def hanoi(n, start, end, via): if n == 1: print(start, end) else: hanoi(n-1, start, via, end) print(start, end) hanoi(n-1, via, end, start) n = int(input()) print((2**n)-1) if n 더보기
BOJ 1002 (터렛) #include #include int main() { int T, res; double x1, y1, r1, x2, y2, r2; scanf("%d", &T); for (int i = 0; i q) res = 2; if (d == r || d == q) res = 1; if (d > r || d < q) res = 0; if (x1 == x2 && y1 == y.. 더보기
BOJ 1316(그룹 단어 체커) #include #include int main() { int N; scanf("%d", &N); int count = 0; for (int i = 0; i < N; i++) { char word[101]; int alpha[26] = { 0, }; int flag = 1; scanf("%s", word); int length = strlen(word); for (int j = 0; j < length; j++) { //printf("%c: %d\n", word[i],alpha[word[i] - 97]); if (alpha[word[j] - 97] == 0) { alpha[word[j] - 97] = 1; } else { //printf("i = %d, word[i] = %c\n", i, word[i]).. 더보기
BOJ 1577(단어공부) 처음에 C++로 구현하려고 했는데 계속 런타임 에러가 떴다. #include #include char str[1000001] = { 0, }; int main() { int alpha[26] = { 0, }; unsigned int max = 0; scanf("%s", str); unsigned int length = strlen(str); for (int i = 0; i = 'A' && str[i] = 'a' && str[i] 더보기
BOJ 10828(스택), 10799(쇠막대기) 10828번: 스택 #include #include #include #include using namespace std; int main(){ stack st; int n, m; char tmp[10]; cin >> n; for(int i=0;i> tmp; if(!strcmp(tmp, "push")){ cin >> m; st.push(m); } else if(!strcmp(tmp, "pop")){ if(st.size() == 0) cout 더보기
알고리즘 DP 정리 DP? Dynamic Programming 문제를 해결할 때, 큰 문제를 작은 문제로 분할하여 푸는 방법. 분할 정복 알고리즘과 유사. DP는 계산했던 결과를 저장하여 불필요한 연산 제외. 크게 Top-Down, Button-Up 방법 존재. 메모이제이션 (Memoization) : 계산한 값 저장하는 것 특성 Overlapping Subproblems : 큰 문제 --> 작은 문제 --> ... OPtimal Structure : 작은 문제의 결과값(return) --> 큰 문제의 결과값 --> ... 문제풀이 #include int main(){ int n; int a=0,b=1,result=0; scanf("%d", &n); if(n==1) { printf("1"); return 0; } for(i.. 더보기
기초 자료구조 정리(리스트, 그래프, 트리) 리스트(List) 연결 리스트와 같이 순서가 있는 자료구조 C에선 구조체를 이용해 구현 가능 C++에선 #include 를 통해 사용 가능 상황에 따라 배열보다 효율적으로 문제를 풀 수 있음 std::list std::list::iterator #include #include using namespace std; int main(){ list lt; list::iterator iter = lt.begin(); int n, m; scanf("%d %d", &n, &m); for(int i=1;i 더보기