일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩테스트
- 알고리즘
- 소감
- LIS #Algorithm #요소추적
- 카카오
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 식단
- BaekJoon
- 유니온파인드
- 스마일게이트
- 삼성 #코테 #2020상반기 #c++
- 투포인터
- 백준
- Smilegate
- 보석쇼핑
- 카카오인턴
- 중반부
- 코테
- 서버개발캠프
- 1편
- Algorithm
- Union-find
- c++
- BFS
- Today
- Total
목록Category (222)
짱아의 개발 기록장
[메인 로직] words벡터에 있는 단어들과 비교대상이 되는 단어를 비교하여 한 개의 알파벳만 차이가 나는 지 확인한다. => check함수 그리고 이미 방문했던 단어들은 제외시킨다. => visited배열 이렇게 DFS+백트래킹을 구현하면 된다. 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 #include #include #include #include using namespace std; int visited[51] = {0, }; int an..
처음에는 어떻게 풀어야할지 도통 감이 오지 않아서,,, 결국 질문하기 탭에서 힌트를 얻었다. 플로이드 와샬을 통해 풀수 있었다. 일반적으로 플로이드 와샬은 최단 경로를 구하기 위해 사용하지만 이 문제에서는 단지, 이기는지 지는지의 관계에 초점을 맞추어서 플로이드 와샬을 적용시켰다. 만약, dp[a][b]=1이라면 a가 b를 이기는 관계이고 dp[a][b] = -1이라면 a가 b에게 지는 관계이다. 그리고 문제에 따라, a가 b를 이기고 b가 c를 이긴다면? a가 c를 이기는 것이 성립한다는 것을 알 수 있다. 위의 논리대로 플로이드와샬을 활용해 로직을 구현하면 된다. 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..
[핵심 요소] 계속 테케, 4번이 틀려서 봤더니.... 왠걸 같은 항공편이 2번 있어도 괜찮기 때문에 from->to로 가는 항공편을 한 번 갔다고 해서 못가게 하면 안되는 것이었다.....즉, ["ICN", "A"], ["ICN", "A] 똑같은 항공편이 2개 있을 수도 있다는 것! 그래서 visited[][] 2차 배열을 사용해서 visited[from][to]의 항공편 개수를 저장해주었고 방문할때마다 -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 ..
유니온파인드를 사용하는 대표적 문제이다. 문제는....cin, cout이 진짜 느리다는 것을 실감한 문제^^ cin, cout을 쓰니까 맞왜틀이어서 질문 검색란을 찾아보니 똑같은 문제에 시달리시는 분들이 계셔서 ㅋㅋㅋ ios::sync_with_stdio(0); cin.tie(0); 써서 해결했다. 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 // 집합의 표현(1717번) #include #include using namespace std; int n, m, a, b, c; int connect[1000002] = {0, }; in..
잘못된 테케를 넣는 바람에 괜히 시간을 날렸던 문제....^^ 그냥 원래 짰던 코드가 맞았던 건데 테케를 잘못 넣어서 괜히 시간 낭비를 해버렸다....으이ㅏ아아아 [메인 로직] 디딤돌에 적혀있는 숫자들 중 가장 작은 수와 큰 수를 기준값으로 정하고 이분탐색을 시작했다. 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 43 44 #include #include #include using namespace std; int solution(vector stones, ..
JPA를 사용하게 된 이유? SQL 단순 반복 작업으로 인한 업무 효율성 악화 패러다임 불일치 패러다임 불일치 관계형 데이터베이스는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술, but, 객체지향 프로그래밍은 메시지를 기반으로 기능과 속성을 한 곳에서 관리하는 기술,,, 관계형 데이터베이스로 객체지향을 표현할 수 있을까??? => 패러다임 불일치.... 이렇게 서로 지향하는 바가 다른 2객의 영역(객체지향 프로그래밍 언어 / 관계형 데이터베이스)을 중간에서 패러다임 일치를 시켜주기 위한 기술이 ====> "JPA"이다. 즉, 개발자는 객체지향적으로 프로그래밍을 하고, JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 생성해서 실행해준다. 개발자는 항상 객체 지향적으로 코드를 표현할 수 있으니 더는..
그리디+투포인터를 사용한 문제였다. 문제를 처음봤을 때 정확히 풀이가 떠오르지는 않았지만, 어차피 2명이 최대이고 limit이 주어져서 i, j 인덱스로 해결할 수 있을 것이라 생각했다. [메인 로직] 중요한 점은, i, j모두 전역변수로 선언해주어야 한다는 것!!!! people배열을 정렬하고 j는 맨뒤부터, i는 맨 앞부터 탐색하도록 했다. 그리고 i, j의 합이 limit이하면 두명이서 보트를 탈 수 있기 때문에 i++, answer++했고 limit을 초과하면 그냥 answer++하고 넘어간다. 이후, i==j인 경우는 answer++을 한 번 더 해준다. 첫 번째 풀이 for문을 사용해서 푸는 방법 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ..
그렇게 난이도가 높지는 않은 문자열 처리 문제였다. 2개씩 단위로 나누어서 다중집합(중복이 가능한)을 만들고 다중 집합들의 합집합과 교집합을 구하는 문제! 합집합, 교집합을 구하는 방법에는 여러가지가 있겠지만, c++ STL을 사용해서 풀었다. set_union => 합집합 set_intersection => 교집합 그리고! set_union, set_intersection을 사용할 때 중요한 점!!!!! 반드시 각각의 집합이 정렬되어있는 상태여야한다. 그래서 이전에 s1, s2를 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 ..