일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BFS
- 백트래킹
- 퇴사통보
- Kafka
- 물채우기
- softeer
- upper_bound
- 연결요소
- compose
- dfs
- 기술면접
- 6987
- 처우협의
- msSQL
- OFFSET
- 처우산정
- 경력
- @P0
- 성적평가
- 오퍼레터
- boj #19237 #어른 상어
- 매개변수탐색
- 파라메트릭
- BOJ
- 13908
- 백준
- incr
- 소프티어
- 이분탐색
- Docker
- Today
- Total
목록전체 글 (629)
기술 블로그
https://www.acmicpc.net/problem/2161 쉬운 시뮬레이션 문제다. 31번 째 줄의 조건문만 조심하면 된다. 1234567891011121314151617181920212223242526272829303132333435363738394041#include #include #include #include #include #include #include #include #include #include using namespace std; int main(void){ int N = 0; queue q; scanf("%d", &N); for (int i = 1; i
https://www.acmicpc.net/problem/1018 브루트 포스 문제이길래완전한 체스판 2개(하얀 색을 먼저 시작하는 판과 검은 색을 먼저 시작하는 판)를먼저 준비해 놓고, 입력 받은 판을 [행][열]의 값끼리 비교하여최솟값을 출력한다. 다만, 마음에 걸리는 것은 정말로 완전한 체스판 2개를 칠해놓고 시작하는 방법 외에 더욱 더 간단하고 보기 쉬운 코드가 있는지 궁금하다. 구글링을 좀 해봐야겠다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878..
전형적인 이분 탐색이다. 구현을 하면서, 1부터 탐색하여 입력한 숫자들 중의 최댓값까지 직접 탐색을 하니, 시간 초과가 뜰 것 같았는데 다행히 통과되었다. 20번 째 while 조건 left < right가 아니라 left
https://www.acmicpc.net/problem/4690 2가지 풀이 방법이 있다. 1. 백트래킹2. 단순 for문 이 문제의 경우 2번이 더 간결하고, 빠르다. 백트래킹123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114#include #include #include #include #include #include #include #..
https://www.acmicpc.net/problem/10804 주어진 인덱스 범위 안에서 내림차순 하는 줄로 착각했다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include #include #include #include #include #include #include #include #include #include using namespace std; vector v; void change(int left, int right){ while (1) { swap(v.at(left), v.at(right)); ++left; --right; if (left >= right)..
https://www.acmicpc.net/problem/2503 처음에 어떻게 접근해야할까 고민을 했다. 숫자 야구의 게임 원리를 잘(?) 알면 쉽게 푸는 문제였다. 예를 들어, 123 1 1을 입력 받았을 때, 123과 100~999를 서로 비교하여, strike 개수와 ball 개수가 다르면 false 처리해주면 된다. 어차피 100 ~ 999 중에 정답이 무조건 있고, 100 ~ 999의 각 숫자들의 정답에 대한 strike 개수와 ball 개수는 123의 정답에 대한 strike 개수(1)와 ball 개수(1)가 같다. 다시 말해, 123 1 1은 정답과의 비교를 통한 확실한 정보이기 때문이다. 예)123 1 1 일 때.324와 123을 비교한다. 일단 strike = 1임을 바로 알 수 있다...
맨 마지막 원소를 삭제할 때만 주의하면 된다. v.end()가 아니라 v.end() - 1이다. 단, insert 할 때, 맨 마지막 끝에 삽입 할 때에는 v.end()이다. vector의 insert와 erase를 활용한 문제도 풀어보자.(물론 다른 방법의 풀이도 있다.)문제 : https://www.acmicpc.net/problem/1021정답 : http://hsdevelopment.tistory.com/163 실행 결과원래의 vector = 1 2 3 4 5 6 7 8 9 10맨 앞 원소 삭제 = 2 3 4 5 6 7 8 9 10두 번째 원소 삭제 = 2 4 5 6 7 8 9 10끝 원소 삭제 = 2 4 5 6 7 8 9숫자 8 삭제 = 2 4 5 6 7 9제일 처음에 숫자 1 삽입 = 1 2 ..
https://www.acmicpc.net/problem/1021 생각했던 조건들보다 1~2개 더 조건이 있었다. deque로 구현하려고 하였으나, 큐 안에 있는 원소의 인덱스 위치를 찾기 귀찮아서 그냥 vector로 구현하였다. vector의 insert와 erase를 알면 쉽게 풀 수 있다. 단, 오른쪽으로 이동할 때에는 tail이 하나 더 증가해야한다. (75번 째 줄의 erase 때문) 예) 1 2 3 4 5에서 4를 삭제할 경우, tail = |4-5| = 1이 되므로, 4 5 1 2 3 (총 2번 이동) 이 되어야 한다. 2를 삭제 할 경우에는 head = |1-2| = 1이 되므로, 2 3 4 5 1 (총 1번 이동) 12345678910111213141516171819202122232425..