전체 글 103

백준 2744 (C++) 대소문자 바꾸기

아이디어 아스키 코드 차트표를 참고하면 대문자와 소문자가 십진수로 32가 차이나는 것을 알 수 있다. 따라서 소문자 a를 기준으로(97) 대소문자를 구분해서 대문자라면 32를 더하여 char로 출력하고, 소문자라면 32을 뺀다. 코드 #include #include using namespace std; using ll = long long; int main(void) { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); string s; cin >> s; for (int i = 0; i < s.size(); i++) { if (s[i] < 97) { cout

PS/BOJ 2021.12.23

백준 10026 (C++) 적록색약

유형 2차원 배열의 인접한 부분을 bool형 배열로 체크해가며 탐색하는 문제이다. 비슷한 문제를 풀어본 적이 없다면, 해결의 실마리조차 모르겠다면 아래 글을 참고하자. 2021.09.26 - [PS/백준] - 백준 4963번 (C++) 섬의 개수 백준 4963번 (C++) 섬의 개수 구글링 해서 풀었다면? 그래프 이론을 공부한 뒤에도 이 문제의 해답이 떠오르지 않는다면, 이 문제의 풀이를 암기하고, 비슷한 응용 문제를 풀어보는 게 효율적인 학습법일 것 같다. https://www.ac synodic.tistory.com 구현 아이디어 bfs로 탐색하면서, 탐색한 곳은 bool 배열로 체크해주면 섬처럼 묶인 부분들의 개수를 셀 수 있다. 적록색약인 경우와 아닌 경우 각각의 탐색 조건이 다를 것이다. 이를테..

카테고리 없음 2021.12.15

백준 2583 (C++) 영역 구하기

아이디어 1. input 2차원 배열을 예제의 모양대로 처럼 표현하기 위해서 그대로 넣을 수 없고 for (int i = y1; i < y2; i++) { for (int j = x1; j < x2; j++) { arr[m-i-1][j] = 1; } } 를 거쳐야 한다. 2. dfs dfs를 진행하면서, 인접한 행렬은 visit되었다고 체크해주고, main함수에서 이차원 배열이 visit되었는지 세면서 섬처럼 인접한 부분을 cnt해주면 분리된 영역의 개수를 알 수 있다. 여기서 각 분리된 영역의 넓이를 알기 위해 visit되지 않은 칸에 (값은 0) dfs함수가 재귀적으로 호출될 때마다 영역의 넓이를 더해줬다. 그리고 매 영역마다 넓이를 0으로 다시 초기화한다. 코드 #include #include #i..

PS/BOJ 2021.11.27

알고리즘 분석 - 트리

이진트리에서 왼쪽 서브트리의 노드 개수가 오른쪽 서브트리의 노드 개수보다 작은 노드의 개수 구하기 이진트리에서 노드 i의 왼쪽 서브트리의 노드 개수를 Left(i)라 하고 오른쪽 서브트리의 노드 개수를 Right(i)라 할 때, Left(i) < Right(i)인 노드 i의 개수를 구하는 알고리즘을 재귀법(recursion)을 사용해서 작성하기 #include #include #include using namespace std; int tree[1001][2] = {-1, }; int ans = 0; int l = 0; int r = 0; int height(int root) { if(root == -1) return 0; int hLeft = height(tree[root][0]); int hRight..

학교 과제 2021.11.24

[PyMysql] TypeError: can only concatenate str (not "NoneType") to str

뜻 그대로이다. string 타입에 string 타입이 아닌 변수를 concatenation 할 수 없다. 나의 경우는 w_file.write("> " + cname + ' ' + cid + ' ' + bid + ' ' + mno + ' ' + type + ' ' + rentaldate + "\n") 이 코드에서 에러가 발생했다. rentaldate의 type은 date인데, 이 앞은 string이므로 당연히 concatenate 할 수 없기 때문이다. w_file.write("> " + cname + ' ' + cid + ' ' + bid + ' ' + mno + ' ' + type + ' ' + str(rentaldate) + "\n") 이렇게 수정하여 해결했다.

백준 10845 (C++) 큐

기본적인 구현 문제였다. 이런 문제는 c++의 stl인 queue를 사용해도 되지만, 자료구조 학습 기간이 길지 않은 초보자라면 직접 구현해보길 권장한다. front 와 back을 증가시키기만 하는 linear queue를 구현해도 주어진 input이 배열의 범위를 넘어가지 않아서 circular queue가 필요하지 않은 것 같다. circular queue는 modulo를 사용하면 된다. https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmic..

PS/BOJ 2021.11.18

[Mysql] error code: 1822. failed to add the foreign key constraint. 오류

에러메세지 error code: 1822. failed to add the foreign key constraint 참고 https://stackoverflow.com/questions/43511183/mysql-error-1822-failed-to-add-foreign-key-constraint-missing-index-for-contra MySQL Error 1822: Failed to add foreign key constraint; missing index for contraint BUT index exists I am trying to add an foreign key to my flightschedule table but it fails, but I do not really know why. ..

백준 10409 (C++) 서버

https://www.acmicpc.net/problem/10409 10409번: 서버 당신은 FCFS(First-Come, First-Served)의 규칙에 따라 요청된 일을 처리하는 서버를 담당하게 되었다. 매일, 당신은 일을 처리하기 위해 최대 T분 동안 서버에 시간을 할당할 수 있다. 당신은 오늘 주어 www.acmicpc.net 여태 합한 시간(sum)과 이번에 입력받은 job의 시간의 합이 T를 넘어설 때, 이터레이션 i 를 출력하고 main을 종료한다. main을 종료하지않고 반복문을 빠져나왔다면, 모든 일이 시간 안에 끝난 것이므로 n을 출력한다. #include using namespace std; using ll = long long; const int MAX = 100001; int ..

PS/BOJ 2021.11.07