일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 투 포인터
- 유니온 파인드
- Network
- 알고리즘
- 플로이드-와샬
- mst
- java
- CS
- 문자열
- Kotlin
- 위상정렬
- 그리디
- 스택
- 백트래킹
- 동적계획법
- 완전탐색
- 세그먼트 트리
- 수학
- 후니의 쉽게 쓴 시스코 네트워킹
- JUnit 5
- 시뮬레이션
- 이분탐색
- swea
- 에라토스테네스의 체
- BFS
- 프로그래머스
- Effective Java
- 백준
- 구현
- dfs
목록전체 글 (291)
반갑습니다!
13458번: 시험 감독 www.acmicpc.net 풀이 단순 계산으로 해결할 수 있는 문제이다. 총감독관은 1명이 필수로 들어가야하므로 각 방에 1명씩 배치하고, 남는 인원은 부감독관을 배치해서 해결할 수 있다. 코드 #include using namespace std; int n, b, c; int a[1000001]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i = 0; i > a[i]; cin >> b >> c; long long ans = 0; for (int i = 0; i < n; i++) { // 총감독관이 감시가능한 인원을 제거 a[i] -= b; // 감시해야할 인원이..
3190번: 뱀 www.acmicpc.net 풀이 일반적으로 생각하는 스네이크 게임과 달리 이 문제에서는 머리를 이동시키고 나서 사과가 없으면 꼬리를 지우므로 이 부분을 유의해서 종료조건을 생각해야한다. 구현하기 편하게 하기 위해서 사과는 좌표값을 키로 하여 set에 저장하였고, 뱀의 몸통은 list에 저장해서 구현하였다. 그리고 방향은 시간을 키로 하여 map에 저장하여 구현하였다. 코드 #include #include #include #include using namespace std; int n, k, l; int sx = 1, sy = 1, dir = 0; list snake; set apple; map cmd; const int dx[] = { 1, 0, -1, 0 }, dy[] = { 0, 1..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 어떤 숫자의 길이를 size라고 했을 때, 어떤 숫자에서 k개의 숫자를 제거해야한다는 말은 결국 size - k 개의 숫자를 선택하라는 말과 같다. 그리고 앞자리의 숫자가 클수록 큰 숫자이기 때문에 [0, size - k) 범위에서 가장 큰 숫자를 고른다. 한가지 숫자를 선택했다고 가정하자. 그리고 그 숫자의 위치가 i라고 하면, 그 다음에 고를 숫자는 [i+1, i+1 + size - k)이 된다는 것을 알 수 있다. 따라서 계속해서 동일한 방식으로 size-k개의 숫자를 선택하면 된다. 예시를 보면서..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 이분탐색으로 해결하는 문제이다. 이분탐색을 조금 응용해서 풀어야한다. 이분탐색에서 가장 중요한 것은 탐색의 기준으로 잡는 것이다. 이 문제에서는 mid를 기준으로 해서 돌들을 순차 탐색하고, mid보다 돌들간의 거리가 짧으면 돌을 제거한다. 그렇게 했을 때 제거된 돌의 개수가 n보다 작거나 같으면 mid 값을 증가시키고, n보다 큰 경우에는 mid값을 감소시켜 이분탐색한다. 코드 #include #include #include using namespace std; int solution(int dista..
12100번: 2048 (Easy) www.acmicpc.net 풀이 블록의 움직임을 구현하고, 완전탐색으로 모든 경우를 시도해보면 되는 문제이다. 이 문제의 포인트는 블럭을 이동시키는 것과 완전탐색을 구현하는 것이다. 블럭을 이동시키는 것은 상하좌우 4방향을 구현해야하는데, 한 방향을 구현해두면 보드를 회전시켜 다른 방향을 쉽게 구현할 수 있다. void rotate_board() { vector tmp = board; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) board[i][j] = tmp[n - 1 - j][i]; } 보드를 시계방향으로 90도 회전하는 함수는 위와 같은데, 알아두면 유용하니 숙지하기를 추천한다. 보드를 회전시키는 함수를 구..