TIL💡(277)
-
[백준] 11066: 파일 합치기(assert 사용으로 디버깅 🐛)
https://www.acmicpc.net/problem/11066 11066번: 파일 합치기 소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본 www.acmicpc.net 이 문제를 처음에 보면 앞뒤로 연속되게 합쳐질 수 있어서 일반적인 다이나믹 프로그래밍이 떠오르지 않을 수 있다. 그래도 중복 문제가 발생하기 때문에 다이나믹 프로그래밍으로 풀고 싶다는 욕구가 든다. 그렇다면 중복 문제는 어떻게 해결해야하는가? 어떠한 구간의 합이 궁금하다면 해당 구간을 임의로 두 부분으로 나누어서 왼쪽 부분과 오른쪽 부분을 합친 비용의 최솟값이 될 것이다. 두 부분을 나누..
2022.05.31 -
[백준] 1152: 단어의 개수
https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 문자열 조작은 항상 어려워서 브론즈 문제임에도 제대로 시도해보았다. cin.getline vs. 헤더의 getline 📌 cin.getline(char 배열, 최대 입력 사이즈) cin의 멤버 함수이다. char 배열에 스트림 사이즈만큼 마지막 글자에 NULL 문자가 포함된 한 줄의 문자 배열을 입력받는다. 📌 헤더의 getline(입력 스트림, string 객체, 구분자) 지정한 구분자(d..
2022.05.30 -
[백준] 7579: 앱(feat. DP)
앞선 코테에서 생각 이상으로 다이나믹 프로그래밍이 까다롭고 출제도 자주 된다는 것을 알게 되어 다이나믹 프로그래밍 문제를 열심히 준비하고 있다. 그런데 이전에 풀었던 풀이마저도 가물가물해서 복습도 병행하고 있다. https://www.acmicpc.net/problem/7579 7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net 여기서는 어떻게 비용과 확보할 수 있는 메모리를 어떻게 연관짓느냐가 쟁점이다. 이럴 때는 인덱스로 메모이제이션되는 값에 접근하는데, 인덱스를 어떤 걸로 삼아야하는지를 결정하면 된다. 이전의 비용..
2022.05.30 -
[백준] 2306: 유전자(feat. DP 엣지케이스 주의)
https://www.acmicpc.net/problem/2306 2306번: 유전자 DNA 서열은 4개의 문자 {a,c,g,t} 로 이루어진 문자열이다. DNA 서열에는 생명의 신비를 풀 수 있는 많은 정보가 들어 있다. 특히 KOI 유전자의 길이는 사람의 키와 깊은 상관 관계가 있다는 것이 알려 www.acmicpc.net 그동안 접했던 다이나믹 프로그래밍보다 훨씬 어려운 문제였다... 처음에는 단순한 문제로만 생각했어서 단순하게 풀려고 했는데 자꾸 예상치 못했던 케이스들이 등장했다. 부분 서열로 구성할 수 있고, 다양한 조건이 있지만 사실 {a,t}, {g,c} 를 매치하고 최대 부분 수열을 만들면 된다는 것으로 귀결된다. 여기까지는 좋았다. 하지만 그 다음부터 조건을 잘못 설정하여 문제를 제대로 ..
2022.05.30 -
[프로그래머스] 단체사진 찍기
https://programmers.co.kr/learn/courses/30/lessons/1835 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 programmers.co.kr 알고리즘 키워드 - 문자열 조작 - DFS 전역 변수를 안 써야 통과할 수 있는 문제다.. 안내에서는 전역 변수를 초기화해서 쓰라했지만, 초기화를 해도 통과가 안된다ㅠㅠ 그래서 걍 안 써버리고 call by reference 스타일로 문제를 풀었다. DFS 식으로 한 명 배치할 때마다 이전에 배치된 애들과 주어진 조건에 위배되는지를 확인하면서 DFS로 탐색을 ..
2022.05.28 -
[네트워크] 방화벽
방화벽이란 네트워크 중간에 위치해 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용하거나 차단하는 장비이다. 방화벽은 NAT(Network Address Translation) 동작 방식과 유사하게 세션 정보를 장비 내부에 저장한다. → 세션 테이블 패킷이 외부로 나갈 때 세션 정보를 저장하고 패킷이 들어오거나 나갈 때 저장했던 세션 정보를 먼저 참조해 들어오는 패킷이 외부에서 처음 시작된 것인지, 내부 사용자가 외부로 요청한 응답인지 가려낸다.
2022.05.25