일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 경력
- 백준
- 소프티어
- BOJ
- Kafka
- 퇴사통보
- 처우협의
- Docker
- softeer
- compose
- OFFSET
- incr
- 파라메트릭
- 6987
- 백트래킹
- dfs
- 물채우기
- 오퍼레터
- boj #19237 #어른 상어
- 처우산정
- 매개변수탐색
- 이분탐색
- 기술면접
- 연결요소
- 13908
- BFS
- 성적평가
- msSQL
- upper_bound
- @P0
- Today
- Total
목록알고리즘 문제 (501)
기술 블로그
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임을 바로 알 수 있다...
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..
https://www.acmicpc.net/problem/1057 다음 라운드의 자신의 번호는 (현재 자신의 번호 + 1) / 2이다. 예) 1과 2를 보면(1 + 1) / 2 = 1(2 + 1) / 2 = 1같으면, 경기(대결)를 해당 라운드에서 하게 된다. 1234567891011121314151617181920212223242526272829303132333435363738#include #include #include #include #include #include #include #include #include #include using namespace std; int N = 0, kim = 0, lim = 0; int main(void){ scanf("%d %d %d", &N, &kim, &..
https://www.acmicpc.net/problem/1966 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include #include #include #include #include #include #include #include #include #include using namespace std; bool cmp(int &a, int &b){ return a > b;} int main(void){ int T = 0, N = 0, M = 0, document = 0; scanf..
https://www.acmicpc.net/problem/2668 결국 DFS를 이용하여 Cycle을 찾는 문제이다. 주석 참고. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990#include #include #include #include #include #include #include #include #include #include using namespace std; vector v[101];vector ans; int N = 0, start ..
https://www.acmicpc.net/problem/4641 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include #include #include #include #include #include #include #include #include #include using namespace std; vector v; int search(){ bool visit[101] = { false, }; memset(visit, false, sizeof(visit)); int ret = 0; for (int i = 0; i
https://www.acmicpc.net/problem/10451 연결 요소의 개수를 구하는 문제이다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768#include #include #include #include #include #include #include #include #include #include using namespace std; vector v[1001]; bool visit[1001] = { false, }; int connect = 0; void DFS(int start){ visit[start] = t..
https://www.acmicpc.net/problem/6378 24 ~ 25번 째 코드 실수 주의. 왜 안 되나 몇 분 동안 계속 봤더니, 초보적인 실수를 하였다. 123456789101112131415161718192021222324252627282930313233343536373839404142#include #include #include #include #include #include #include #include #include #include using namespace std; int digit(string s){ int sum = 0; for (int i = 0; i s; if (s[0] == '0') break; cout