본문 바로가기

분류 전체보기

(65)
2022/08/12 (금) 오늘은 백준 3197 백조의 호수 문제를 공부했다. 메모리 초과가 발생하였는데, 아직 정확한 이유를 찾지 못했다. 다른 사람들의 코드를 더 보고 해당 문제를 풀기 위해 어떻게 구현했는지 공부를 해본 뒤에 다시 나의 코드를 보고 찾아보려고 한다. 토익 단어장 Day 3 진행 accustomed 익숙한 / demanding 요구가 많은, 힘든 / colleague (직업 상의) 동료 / division 부서 / manage ~을 경영하다; 가까스로 하다 / extension 연장, 연기; (전화의) 내선 / electronically 컴퓨터 통신망으로, 컴퓨터로 / delegate (권한 등을) 위임하다, 대표 / attentively 주의 깊게, 조심스럽게 / draw 끌다, 끌어당기다 / revision..
[백준 3197][C++] 백조의 호수 문제 https://www.acmicpc.net/problem/3197 3197번: 백조의 호수 입력의 첫째 줄에는 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1500. 다음 R개의 줄에는 각각 길이 C의 문자열이 하나씩 주어진다. '.'은 물 공간, 'X'는 빙판 공간, 'L'은 백조가 있는 공간으로 나타낸다. www.acmicpc.net 풀이 과정 해당 문제를 정말 많이 고민하면서 풀었지만 계속 메모리 초과가 발생했다. 메모리 초과에 의해서 문제를 풀지 못했던 적은 처음이라 이런저런 경우를 많이 테스트해보며 과정을 적으려 한다. 1) int -> char 변경 (실패) 처음엔 전체 호수의 상태를 저장하기 위해 int map [1501][1501]를 이용했었는데, 여기서 메모리가 초과되었나 하고 고..
2022/08/11 (목) 오늘은 파일 합치기 문제를 공부했다. 아직 DP에 대한 이해와 적용이 미흡하다. 관련 예제에 대한 풀이를 여러 개 찾아보며 다른 사람들은 어떻게 구현했는지 더 공부해야 할 것 같다. 토익 단어장 Day 4 진행 lax (행동 등이) 느슨한, 규율에 못 미치는 / procrastinate 미루다, 꾸물 거리다 / combined 결합된, 합동의 / undertake (일을) 떠맡다 / assume (증거는 없으나) 사실이라고 생각하다; (책임 역할을) 맡다 / occasionally 가끔, 때때로 / conduct (업무 등을) 수행하다 / personnel (집합적) 직원, 인원; 인사과 / direct ~에게 길을 안내하다, 가르쳐 주다 / leading 선도적인, 일류의, 가장 중요한, 선두적인 / ..
[백준 11066][C++] 파일 합치기 문제 https://www.acmicpc.net/problem/11066 11066번: 파일 합치기 소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본 www.acmicpc.net [풀이 참고 링크 1] [풀이 참고 링크 2] 풀이 과정 처음에는 가장 작은 순서대로 정렬해서 가장 작은 것부터 결합하면 되는 것 아닌가라는 착각을 했었지만, 좌 우 정보가 사라지기 때문에 그렇게 처리하면 오답이 나온다. 그렇다면 각각에서 좌 우 탐색을 하며 DP를 진행해야 하는 것인가 고민하였다. 해당 문제 시간 안에 풀지 못했다. DP로 구현해야겠다는 생각이 들었지만, 구현에서 ..
2022/08/10 (수) 오늘은 피보나치 수 3 문제를 공부했다. 이번 문제는 선형 대수적인 개념을 적용하여 풀이할 수 있는 문제였는데, 배운 지 시간이 좀 지난 과목이다 보니 많이 잊어버린 것 같다. 선형대수의 개념은 이런 알고리즘에 적용할 수 있고, 인공지능 학습의 비전 분야에서도 중요하다는 얘기를 들어서 이번 기회에 확실히 공부를 해봐야겠다는 생각이 들었다. 토익 단어장 Day 5 진행 sophisticated (기계가) 정교한, 복잡한; 세련된 / timely 시기적절한, 때를 맞춘 / realistically 현실적으로 / promptly 즉시; 정각에 / accessible 출입할 수 있는; 이용할 수 있는 / implement 실시하다, 시행하다 / outstanding 우수한; (부채 등이) 미지불된 / outli..
[백준 2749][C++] 피보나치 수 3 문제 https://www.acmicpc.net/problem/2749 2749번: 피보나치 수 3 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 과정 [피사노 주기 문제] [행렬 풀이 코드 1] [행렬 풀이 코드 2] [피보나치의 행렬 멱법] 해당 문제를 직접 풀지 못하고 다른 사람들의 풀이를 찾아보게 되었다. 풀이는 크게 두 가지였다. 하나는 피사노 주기를 이용하는 방법과 다른 하나는 행렬을 이용하는 방법이었다. 필자는 위의 링크들을 참고하여 행렬을 이용한 풀이를 선택했다. 피사노 주기에 대한 풀이가 훨씬 간단했지만, 해당 조건보다 행렬을 이용해 문제를 풀이하는 방법이 더 보편적이고 다른 문제에도 적용할 수..
2022/08/09 (화) 오늘은 백준 10830 행렬 제곱 문제를 풀었다. 그렇게 어렵지 않았고 거듭제곱 형태에서 분할 정복으로 시간을 절약하는 것이 주요한 내용이었다. 토익 단어장 Day 6 진행 collection 소장품, 수집물; 징수, 수금 / improvise (연주 연설 등을) 즉흥적으로 하다, 즉석에서 만들다 / alumni 동창생들, 졸업생들 / present 제시하다; 현재의; 참석한 / admission 입장 / banquet 연회, 만찬 / required 필수의, 의무적인 / succeed 성공하다; 뒤를 잇다 / fund-raising 모금 / issue (출판물의) 제 ~호; 문제, 쟁점 / accompany 동행하다; 동반하다 / specifically 명확하게, 분명히; 특히, 특별히 / commit..
[백준 10830][C++] 행렬 제곱 문제 https://www.acmicpc.net/problem/10830 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 과정 분할 정복 알고리즘을 적용한다. 행렬 곱 함수를 작성한 뒤, 행렬의 제곱을 기록하며 결과를 이용하도록 구현한다. 예를 들어 A^9를 구한다고 가정했을 때, A^9 = A * (A^4) * (A^4) 형태로 곱이 이루어지며, O(logN)의 시간 복잡도를 가진다. 정답 배열을 초기화할 때는 곱을 해도 원래 형태가 나오도록 단위행렬 형태로 초기화해야 한다. 소스 코드 #include #include..