본문 바로가기

전체 글172

[백준] 1520 - 내리막 길 https://www.acmicpc.net/problem/1520 1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net 알고리즘 방식 DFS를 활용한 DP 방식이였다. 코드를 보면 DP배열을 모두 -1로 초기화하는 부분이 있는데, 이 부분이 핵심이다. 먼저 dp배열의 값은 해당 위치에서 도착지점에 도달할 수 있는 경우의 수이다. 따라서 특정 위치가 0이라면, 해당 위치에서 도착지점에 도달할 수 있는 경우는 0이라는 의미다. 이는 즉, 해당 위치에서 도착 지점에 도달할 수 있는지를 이미 탐색을 했다라는 의미도 된다.. 2023. 1. 9.
[백준] 18870 - 좌표 압축 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 알고리즘 방식 간단히 예제를 통해 생각하면, [2, 4, -10, 4, -9] 내림차순 정렬과 중복 제거 후 전체 크기에서 현재 인덱스의 값을 빼주면 해당 인덱스의 좌표 압축 결과였다. 중복 제거는 헤더의 unique 함수를 통해 O(N)으로 구현할 수 있다. (unique 함수는 중복 제거된 벡터의 마지막 값을 iterator로 반환한다.) 따라.. 2022. 12. 30.
[백준] 3079 - 입국심사 by C++ https://www.acmicpc.net/problem/3079 3079번: 입국심사 첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 1,000,000,000) 다음 N개 줄에는 각 심사대에서 심사를 하는데 걸리는 시간인 Tk가 주어진다. (1 ≤ Tk ≤ 109) www.acmicpc.net 전형적인 이분탐색 문제였다. 이분탐색을 제대로 이해하질 못해서, 이 문제를 통해 원리를 어느정도 이해할 수 있었다. 알고리즘 방식 이분 탐색의 대상은 상근이와 친구들이 심사를 마치는데 걸리는 시간이였다. (즉 정답) 시작값(st) = 0, 끝값(en) = Tk의 최대값 * M으로 지정해주었다. (시작값 또한 Tk의 최소값 * M으로 지정해도 되지만, 의미 없는 것 같아 생략) 1. .. 2022. 12. 22.
[백준] 2064 - IP주소 https://www.acmicpc.net/problem/2064 2064번: IP 주소 네트워크에 연결되어 있는 컴퓨터들은 각각 하나의 IP 주소를 갖게 된다. 그리고 이러한 IP 주소를 갖는 컴퓨터들이 여러 개 모여서 하나의 IP 네트워크를 구성하게 된다. IP 네트워크는 ‘네트워 www.acmicpc.net 비트마스킹 방식을 사용하지 않으면 구조적으로 시간 초과가 날 수밖에 없는 문제였다. 알고리즘 방식 1. C++에는 Split함수가 없으므로 직접 구현 2. 입력된 IP주소를 '.'을 기준으로 Split 하여 4개의 숫자를 vector ip에 저장 3. 네트워크 주소는 32-m자리까지 고정이고, 이후가 랜덤 값이므로, 입력된 ip주소들 간에 차이가 발생하는 최소 자리수를 구한다. 4. 3.에서 구.. 2022. 12. 16.
[백준] 15661 - 링크와 스타 https://www.acmicpc.net/problem/15661 15661번: 링크와 스타트 첫째 줄에 N(4 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에 S가 주어진다. 각 줄은 N개의 수로 이루어져 있고, i번 줄의 j번째 수는 Sij 이다. Sii는 항상 0이고, 나머지 Sij는 1보다 크거나 같고, 100 www.acmicpc.net 개별적으로 비트마스킹 방식과 백트래킹 방식을 사용하여 풀었다. 아직 비트마스킹이 익숙하지 않아 생각하는데 오래 걸렸다. 1. 비트마스킹 알고리즘 방식 N = 4일 때, 4명의 학생을 조합을 통해 뽑을 수 있는 경우는 0과 2^4 - 1의 숫자가 비트에 저장되는 방식과 같다. 다시 말해 각 비트 자리수는 k번째 학생의 상태를 나타내고, 뽑히지 않은 경우 .. 2022. 12. 9.
[Java] ToyProject - SmartStore 프로젝트 요약 1. 모든 고객의 사이트에서 머문 시간 및 사용 금액을 저장해놓고 머문 시간 및 사용 금액을 통해 고객에게 등급을 부여한다. 2. 등급을 기반으로 분류된 고객의 정보들을 다시 이름, 머문 시간, 사용 금액을 통해 오름차순|내림차순으로 정렬하여 화면에 출력한다. 세부 설명 초기화면은 위와 같다. 1. 등급 분류 기준 (Classification Parameter) 등급 분류 기준을 담은 싱글톤 객체는 Groups이며, Groups객체 하위에 Group[]을 기반으로 등급 분류 기준이 관리 Group 객체는 필드로 [등급 분류, [머문 시간, 사용 금액]]을 소유 Set Parameter 초기에는 어떤 기준도 없는 상태로, 새로운 등급 분류 기준을 추가 등급 분류 종류는 enum을 통해 관리하.. 2022. 11. 26.