일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 처우산정
- 이분탐색
- OFFSET
- boj #19237 #어른 상어
- 소프티어
- 연결요소
- 경력
- 파라메트릭
- compose
- 퇴사통보
- softeer
- 백트래킹
- 물채우기
- 기술면접
- Docker
- dfs
- 백준
- 13908
- 오퍼레터
- 처우협의
- @P0
- incr
- upper_bound
- msSQL
- BFS
- 매개변수탐색
- Kafka
- 6987
- Today
- Total
목록알고리즘 문제 (501)
기술 블로그
https://www.acmicpc.net/problem/17609 결국 완전한 회문이거나, 1개의 문자'만' 빼서 회문인지 판별하면 된다. 처음(0)과 끝(s.length() - 1)을 기준으로 같으면, ++left, --right 해주어 비교한다. 진행 중 s[left], s[right]가 다르다면(=13번 째 줄), (코드에서는 변수명이 l, r로 바뀜. 설명 편의상 left, right로 말하는 것이다.) 그 기점을 기준으로 left + 1하여 ++left, --right하거나 right - 1하여 ++left, --right를 한다. 어차피 결국은 유사 회문은 단 1개만(달라진 기점) 무시하면 되기 때문이다. 위의 2가지 경우 모두 다르면, ret는 2가 될 것이다. 1개라도 같으면, ret는 ..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRF8s6ezEDFAUo 보자마자 시뮬레이션을 떠올렸다. 0인 곳을 4가지 방향(상, 하, 좌, 우) 모두 고려해준다. 주석 참고. block[r][c] : c방향으로 움직이고 있을 때, r번 째 블록을 만나면 block[r][c]의 방향으로 바뀐다. 값 자체임을 유의.rev[d] : d방향의 역방향. 그리고 바보같은 짓을 했다. 계속 49개만 맞고, 1개를 틀리길래 어디가 오류인지 로직을 봤는데도 불구하고 틀린 부분이 없는 것 같길래 뭐지 싶었는데 알고보니 웜 홀 조건을 40 ~ 46번 째 줄(주석 부분)로 구현하였었다. 당연히 올바른 로직인줄 알고 아예 무시하..
https://www.acmicpc.net/problem/3190 다시 풀어보았다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142#include using namespace std; #de..
https://www.acmicpc.net/problem/2529 백트래킹 문제이다. 근데 왜 문제 분류는 위상정렬(그래프)인지는 모르겠다. 첫 시작(=before이 -1)은 무조건 실행돼야 하므로,13번 째 줄에 if조건문을 추가했다. 백트래킹 함수(bt)의 idx는 vc(부등호) 벡터의 인덱스이다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354#include using namespace std; int K;string s, mins = "", maxs = "";vector vc;bool use[10];bool calc; bool chk(int before, int now..
https://www.acmicpc.net/problem/17505 해당 인덱스에 대한 값이 뒤에 있는 값보다 큰 것의 개수를 활용한다. 12345678910111213141516171819202122232425262728293031323334353637383940#include using namespace std; vector v;long long N, K, Size, max_index; int main(void){ cin.tie(0); cin >> N >> K; Size = N; max_index = N - 1; for (int i = 1; i = 1; i--) printf("%d ", i); else if (K == 0) for (int i = 1; i
https://www.acmicpc.net/problem/17412 mcmf 문제이다. 출발점 : 1도착점 : 2 c : 용량w : 비용f : 유량 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102#include using namespace std; #define Max 500#define INF 987654321 int w[Max][Max], c[Max][Max], f[Max][Max], d[Max],..
https://www.acmicpc.net/problem/1092 크레인과 상자를 내림차순으로 정렬한 뒤 구현하면 된다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859#include using namespace std; int N, M;vector c, cc, w; bool cmp(const int & a, const int & b) { return a > b; }; int main(void){ //cin.tie(0); int input, answer = 0; scanf("%d", &N); for (int i = 0; i
https://www.acmicpc.net/problem/2887 나는 x → y → z를 한 번에 정렬하여 순서대로 min 값을 찾는 방법을 생각하였으나 1 1000 31000 1000 위와 같은 좌표들이 있을 수도 있어서 반례가 생기고, 메모리 초과가 발생하였다.(N = 100,000) 알고 보니, 각각을 정렬하여 활용하는 방법이 있었다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374#include using namespace std; #define Max 100001 struct info { int..