일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 백준
- 삼성 SW 기출문제
- 2020 KAKAO BLIND RECRUITMENT
- 2019 카카오 공채
- 비트마스크
- 2018 KAKAO BLIND RECRUITMENT 1차
- CS 스터디
- 2018 KAKAO BLIND RECRUITMENT
- 2018 카카오 공채
- 2019 카카오 개발자 겨울 인턴십 코딩테스트
- bfs
- map
- Baekjoon
- 2019 KAKAO BLIND RECRUITMENT
- dfs
- 2020 카카오 공채
- 2018 카카오
- 자바
- c++
- 알고리즘
- set
- 삼성 SW 역량테스트
- 젠킨스
- 부스트코스
- gcp
- Java
- gradle
- 카카오 공채
- 카카오
- Today
- Total
목록알고리즘 (76)
아무코딩
문제풀이 모양이 2x2만 확인하면 되기때문에 (i,j), (i,j+1), (i+1,j), (i+1,j+1) 만 비교해보면된다. 그리고 자주나오는 문젠데 삭제한뒤 내리는과정 이번에 푼 방법이 생각보다 직관적이고 편한 방법인것 같다. 비슷한 유형의 문제일 때 이렇게 접근하는게 편할거 같다. for(int i=0;i
문제풀이 LRU알고리즘을 기반으로한 캐시를 만드는 문제입니다. LRU 알고리즘은 Least Recently Used란 뜻으로 최근꺼를 사용하겠다. 즉, 가장 오랫동안 사용하지 않은 것을 제거한다는 알고리즘입니다. 매 업데이트시 매 타임의 시간을 시간으로 등록하여 페이지중 가장 시간이 작은(오래된) 페이지를 교체해주면 됩니다. 소스코드 더보기 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 #include..
문제풀이 비트마스크를 사용한다 두 벡터에 & 연산을 적용한 값을 저장한 벡터를 생성한후 앞에서부터 차례로 1
문제풀이 동, 서, 남, 북 4가지 케이스로 움직이는 경우에 따라 면이 바뀌는 경우를 다 정해주는 방식으로 코딩하였다. 회전 4가지마다 다 정의한 경우라 코드 중복이 많은 방법 같지만 직관적으로 바로 떠올리기 쉬운 방법 이고 이러한 방법이 오히려 실제 적용하기 쉽다고 보아 그대로 풀었다. 이동은 모든 케이스르 정의하였고 옮겨질 칸의 적힌 값을 통해 주사위 값과 맵 값의 변화를 주었다. 소스코드 더보기 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 6..
문제풀이 요구한대로 문제풀이를 진행한다. 신경써야될 부분이 있다면 10의 경우 string length가 2이므로 따로 처리를 해줘야되고 * 의 경우 1번째에 나올 경우 따로 예외 처리를 해줘야된다. 그냥 앞의 두개의 값에 대해 변경을 가할경우 에러가 날 수 있을거 같다. 소스코드 더보기 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 #include #include #include #include using namespace std; vector num; in..
문제풀이 다음과 같은 순서로 풀면 된다. 1. 크루들을 버스에 배치시킨다. 2. 마지막 버스의 만석여부를 확인한다. 3. 만석이 아닐시 해당 버스의 시간을 반환 4. 만석일시 만석의 맨마지막으로 들어온 크루의 시간보다 조금 빠르게 (-1) 해주면 된다. 소스코드 더보기 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 8..
문제풀이 문제 자체가 이분탐색인걸 알고푸는데도 이분탐색의 기준을 찾는 데 힘들었다.. 인터넷에서 풀이에대한 힌트를 참고하고 문제를 풀었다. 최소거리를 기준으로 계속 이분탐색을 진행한다. 현재 mid값이 현재 추정한 거리이고 해당 mid값보다 돌사이의 거리가 작은경우에는 바위를 제거 큰 경우에는 거리 최소값을 저장한다. 그리고 기준에 맞게 모든 바위를 제거한후 거리를 판단하여 제거가 더많이 되었으면 거리를 줄이고 제거가 기준보다 적게되었으면 거리 기준을 높인다. 소스코드 더보기 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 #include #in..
문제풀이 n진수숫자를 주르륵 나열한뒤 해당하는 턴의 1글자를 계속 저장해 나가면 되는 문제이다. n진수의 숫자를 구하는 식은 10진수의 수를 n으로 계속 나눠 몫이 0일때까지 나머지를 앞에다 계속 추가해 주는 방식이다. 초등학교 때 배운 2진수 구하는 식을 응용하면 만들 수 있다. string nNumber(int num, int n){ string result=""; while(num/n!=0){ int remainder = num%n; result = number[remainder]+result; num = num/n; } result = number[num%n]+result; return result; } 그리고 숫자를 얼마까지 구해놔야될지 고민하다가 m*t 개수만큼 구했다. 사실 이거보다 적게 잡..