일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gcp
- Baekjoon
- map
- 2018 KAKAO BLIND RECRUITMENT
- 자바
- 삼성 SW 역량테스트
- 2020 카카오 공채
- 젠킨스
- 2020 KAKAO BLIND RECRUITMENT
- 삼성 SW 기출문제
- 카카오 공채
- 2018 KAKAO BLIND RECRUITMENT 1차
- 2019 카카오 개발자 겨울 인턴십 코딩테스트
- 카카오
- set
- 비트마스크
- dfs
- gradle
- 알고리즘
- 2018 카카오
- 2019 카카오 공채
- 백준
- c++
- 프로그래머스
- 2019 KAKAO BLIND RECRUITMENT
- Java
- 2018 카카오 공채
- CS 스터디
- bfs
- 부스트코스
- Today
- Total
목록프로그래머스 (32)
아무코딩
문제풀이 set 을 이용 하는 데 많은 공부가 되었던 문제이다. 원래 4차원 배열을 이용하여 저장해도 됐지만 set을 사용하고 싶어 사용하다가 자연스레 하나 배워간 문제이다. 먼저, set을 사용할때 key가 객체일경우 객체안의 값이아니라 객체자체를 비교하게 된다 그래서 같은객체가 아니라면 값이 같아도 다르게 판단한다. 그래서 hashcode를 오버라이딩하여 수정 할 필요가있다. 객체안의 값이 같은경우 같은 해시코드를 반환하게 해주면 객체 값을 가지고 비교할 수 있다. 그리고 문제풀 때 주의할점이 방향성이 없는 선이라서 나같은 경우에는 양방향으로 set에 다추가해준 뒤 /2 를 통해 길의 개수를 판단해 주었다. 소스코드 더보기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1..
문제풀이 자바의 map사용법을 익히기 위해 풀어본 문제이다. map으로 푸는게 맞는지는 모르지만 나는 map을 사용하였다. 현재 스킬의 사용 가능 여부 -> map을 이용. 매번 map을 초기화 하여 스킬트리가 가능한지 체크한다. 그리고 매번 검사시 그다음 찍어야될 스킬을 따로 검사하여 해당 스킬이 나올시 map을 변경후 다음 스킬로 포인터를 옮긴다. 소스코드 더보기 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 import java.util...
문제풀이 next_permutation 으로 그냥 돌리고 해당 index에서 반환하는 방식을처음 썼는데 시간초과가 났다. 효율성 문제였다. 순열의 특징을 이용하여 앞자리부터 계산해 나간다. 첫자리가 같은 경우의 가짓수는 (n-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 #include #include #include #include using namespace std; vector people; vector solution(int n, long long k) { vector answer; long long factorial = 1; for(i..
문제풀이 그냥 회전을 시키면 시간초과가 나는문제이다. 인덱스와 food time을 포함한 구조체(food)를 만들어 정렬한뒤 food time이 낮은거 부터 삭제해나간다. food time 이 낮은수는 그다음 높은 food time 에서 빼가며 계산해 주는걸 잊어서는 안된다. 왜냐하면 그만큼은 다 돌았기 때문에 이러한 점을 고려하여 돌다가 차이만큼 뺄 수없을때 모듈러 연산을 진행한다. 말이 너무 복잡하니 코드를 보면 이해가 쉬울거 같다. ' accumulate는 누적된 시간이라 생각하면되고 spend는 한번에 넘길 턴? 한번에 소비할 시간이라 보면된다. 소스코드 더보기 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 2..
문제풀이 정렬하는 문제이다. 실패율이 같은 경우 번호 순서라서 이미 정렬된 상태라서 stable_sort를 이용하여 따로 번호정렬을 하지않았다. 소스코드 더보기 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 #include #include #include using namespace std; typedef struct Stage{ int num; int arrival; int not_clear; Stage(){} Stage(int n){ num = n; arrival = 0; not_clear = 0; } }Stage; v..
문제풀이 핵심이되는 부분은 각 타임별 스타트 지점 끝지점을 기준으로 겹치는 부분을 확인하는 것이다. 중간에 포함이 될수도있고, 넘칠수도있고, 뒤만 걸칠수도있고, 앞만 들어갈수도있다. 모든 경우를 다 따져가는 코딩방식이다. 시작지점후 1초, 끝지점후 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..
문제풀이 새로운 STL을 많이 적용해 볼수 있는 문제였다. 교집합과 합집합을 구해 나누는 문제이다. 이전에 풀때는 함수를 사용하지 않고 직접 구현하였지만 이번엔 있는 stl을 활용해서 풀어보았다. 아래에 교집합 합집합 stl을 사용 하기전에 각 벡터는 정렬을 해주어야한다. 1. 교집합. vector inter_result; set_intersection(vecA.begin(), vecA.end(), vecB.begin(), vecB.end(), back_inserter(inter_result)); back_inserter를 이용하면 resize를 이용하여 미리 크기를 정해두지 않고 새로운 컨테이너에 삽입할 수 있다. 2. 합집합. vector union_result; set_union(vecA.begin..