일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1편
- c++
- 소감
- 유니온파인드
- 코테
- 식단
- 코딩테스트
- 중반부
- 스마일게이트
- Union-find
- BaekJoon
- 보석쇼핑
- Smilegate
- LIS #Algorithm #요소추적
- 카카오인턴
- Algorithm
- 백준
- 삼성 #코테 #2020상반기 #c++
- 알고리즘
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 서버개발캠프
- 투포인터
- BFS
- 카카오
- Today
- Total
목록Algorithm (178)
짱아의 개발 기록장
String을 백트래킹으로 구현하는 문제이다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 // 0만들기 #include #include #include using namespace std; int testcase, n; char oper[3] = {'+', ' ', ..
백준 9328번. 열쇠 문제와 매우 유사하다. 다만, 차이점이라면 열쇠문제는 최소 거리를 구하는 것이 아닌 찾을 수 있는 문서의 개수이고 이 문제는 거리를 구해야했다. 따라서, 단순히 문을 저장해서 해결할 수 있는 것이 아니기 때문에 visited배열에 (x, y, 키의 저장상태) 를 저장해주었다. 그래서 같은 위치를 방문하더라도 키의 저장상태가 다르다면 그 위치에 접근할 수 있도록 했다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192// ..
BFS 자체는 어렵지 않았지만, 퍼즐의 상태를 어떻게 저장할지가 굉장히 까다롭게 느껴졌다. 2차원 배열에 저장하려고 했지만,,, 어떻게 보면 BruteForce로 모든 경우를 다 돌아야하기 때문에 2차원으로 한다면,,,, 아주 복잡해지고 메모리도 많이 차지할 것으로 생각되었다. 따라서, 다른 고수분들을 어떻게 코드를 짜셨을까 보다가 대부분 String형태로 저장해놓고 0의 인덱스 값을 찾아서 그것을 2차원 배열의 (x, y) 값으로 바꾸고 인접한 곳과 자리를 바꾸는 형식으로.,,,, 구현하셨더라,,, 아주 최적화된 좋은 방법이라 생각되어 그렇게 구현해보았다. 즉, 2차원 배열의 형태로 되어있어야 bfs를 하기 쉽기 때문에 퍼즐의 상태를 한눈에 보기 쉽게 해서 0의 위치를 찾을 때에는 => String형태..
설명 추가 예정 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124// 열쇠#include #include #include #include #include #include using namespace std; int testcase, h, w;string s, tmp;char map[105..
설명 추가 예정 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100#include #include #include #include #include using namespace std; int n;int map[101][101] = { 0, };int dx[4] = { 0, 0, -1, 1 };int dy[4] = { -1, 1, 0, 0 };int check[101][101] = { 0, }; // 영역 표시하기 i..
설명 추가 예정 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153#include #include #include #include #i..
딱히 어려울 것 없는 구현 문제였다. 다만, 궁수들의 위치를 정하고 다시 배열들을 초기화해주는 작업이 필요하다는 것만 주의하면 될 것 같다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136// 캐슬 디펜스#include #..
간단한? 구현문제이다. 삼성에서 좋아할 것 같은 유형ㅋㅋ (x1, y1), (x2, y2), (x3, y3), (x4, y4) 4개의 점을 잡고 => 이 점은 배열의 가장 자리 점을 의미 이것을 기준으로 배열을 돌리고 가장자리 점을 안쪽으로 한 칸씩 땡겨와서 또 배열을 돌리는 작업을 x1n>>m>>r; for(int i=0; imap[i][j]; } } while(r--){ int x1 = 0, y1 = 0; int x2 = 0, y2 = m-1; int x3 = n-1, y3 = m-1; int x4 = n-1, y4 = 0; while(x1