일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파라메트릭
- 매개변수탐색
- 소프티어
- Kafka
- incr
- 6987
- compose
- 처우산정
- 경력
- msSQL
- BOJ
- OFFSET
- 기술면접
- 물채우기
- @P0
- 퇴사통보
- Docker
- 연결요소
- 백트래킹
- 13908
- dfs
- upper_bound
- 백준
- softeer
- BFS
- 성적평가
- 처우협의
- 오퍼레터
- boj #19237 #어른 상어
- 이분탐색
- Today
- Total
목록알고리즘 문제 (501)
기술 블로그
https://www.acmicpc.net/problem/2258 처음 생각 문제에 의하면 1. 어떤 덩어리를 샀을 때, 추가 비용 없이 그 덩어리보다 가격이 싼 고기들은 얼마든지 덤으로 얻을 수 있음.2. 원하는 양 또는 그 이상의 양을 구매하면 됨.3. 무게가 문제의 핵심이 아님.4. 최소 비용을 구하는 것이 문제. → 최소 비용을 구하는 것이므로{가격, 무게} 가격 오름차순 ☞ 무게 오름차순으로 한 다음 앞에서 순서대로 무게의 누적 합이 m보다 같거나 크게 되는 순간 그 때의 가격을 출력하도록 구현했었다. 하지만 답은 틀렸다. 두 번째 생각 문제에서의 만약 가격이 더 싸다면 은혜가 필요한 양보다 더 많은 고기를 살 수도 있다.라는 부분과 무게를 내림차순으로 해야 무게가 더 큰 것을 먼저 계산할 수 ..
https://www.acmicpc.net/problem/2812 처음 생각문자열 s를 받아서, 내림차순 정렬을 한다. 그런 다음 n-k번만 앞에서부터 출력한다.하지만 알고보니, '순서'를 바꿀 순 없었다. 왜 문제에는 언급이 없지? 두 번째 생각Queue q로 접근.예를 들어보면서 설명. 5 232834라고 하자. q에 우선 3을 넣는다.그리고 2를 넣는다. 2가 3보다 더 작으니 무시하고, q에 2를 넣는다.8을 넣는다. 2(q.peek())보다 8이 크니 2를 지운다. 이 때, k를 1 감소시킨다.(그렇다면, 현재 k = 1) 이때에 2를 지우려면, Deque을 써야함을 깨달았다. 세 번째 생각Deque dq사용.두 번째 생각에서 이어서 써보자. 현재 dq에는 [3, 8]이 있다.3을 넣어보자면, ..
https://www.acmicpc.net/problem/5419
https://www.acmicpc.net/problem/3109 처음 생각 : BFS로 첫 열 → 마지막 열 그러나 바로 방문 처리 등등 몇 초만에 생각 바꿨다. 결국에는 DFS로 첫 열 → 마지막 열로 가는 방법을 선택. stop은 마지막 열에 도착했을 때, stop을 true로 바꿔주고 그 이후로는 stop이 true면, 방문 처리, 재귀 진행이 안 되게 함수 종료. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677import java.io.*;import java.util.*; public..
https://www.acmicpc.net/problem/17130 https://hsdevelopment.tistory.com/273
https://www.acmicpc.net/problem/2141 처음에는 거리(마을 사이의 거리), 마을 위치와 인원 수 모두 고려하려고 하였으나, 문제의 핵심은 인원 수였다. 우선 입력 받은 마을과 인원 수를 정렬 시킨 다음 차례대로 각 마을의 인원 수를 더해가면서, 그 합이 (전체 총 인원 수 + 1) / 2보다 크거나 같을 때의 마을의 위치를 출력해주면 된다. 어쨌든 가치(?)는 인원 수가 제일 중요하고, 인원 수가 많은 쪽에 되도록 우체국을 설치해야 하니, 중심(=(전체 총 인원 수 + 1) / 2)을 기준으로 계산한다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535..
https://www.acmicpc.net/problem/18242 단순 구현 문제이다. 우선 #가 시작 위치(맨왼쪽위), 끝 위치(맨오른쪽아래)의 좌표(행, 열)를 구해주고, 가로와 세로의 길이를 구한다. 그리고 4개의 변에 있는 #의 개수를 세주면 된다. 개수와 길이가 다르다는 것은 '#'이 아닌 '.'가 포함되어 있다는 것이다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687#include using namespace std; int h, w, m[101..
https://www.acmicpc.net/problem/1780 분할 정복이다. 셈하는 것은 HashMap으로 하였다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869import java.io.*;import java.util.*; public class Main { static int n, minus = 0, zero = 0, one = 0; static int m[][]; static HashMap hm = new HashMap(); static boolean chk(int r, int c, int len) { int..