| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 통신 인터페이스
- 그리디
- c++
- 다이나믹 프로그래밍
- 컴퓨터비전
- 백준
- dp
- BFS
- C
- 다이나믹프로그래밍
- 이분탐색
- 자바
- 우선순위큐
- 2018 KAKAO BLIND RECRUITMENT
- 누적합
- cpp
- dfs
- java
- 코틀린
- lv2
- 임베디드
- kotlin
- level3
- 프로그래머스
- 동적계획법
- level2
- 구현
- 컴퓨터 비전
- Stack
- JavaScript
- Today
- Total
목록java (41)
코드를 느껴바라
문제링크성공 여부(걸린 시간): 성공(32분 47초)아이디어일단 문제에서 중요한 키포인트는 한 차량이 들어가고 나가는것이 여러번이 될 수 있다는 것이고그때마다 정산하는 것이 아닌 일괄적으로 23:59에 정산한다고 생각을 하고 문제를 풀어야한다.순서대로 설명해보겠다. 출입차처리그래서 나는 한 차량에 대한 누적시간을 저장해줄 HashMap하나 그리고 최근 들어온 시간을 기록해줄 HashMap하나총 2개의 HashMap을 생성했고 이 2개에 저장된 정보를 바탕으로 마지막에 일괄계산 해주었다. 우선 전체적으로 보면 records의 차량 기록을 하나씩 돌면서 출차, 입차 처리를 수행해 주었다. ⭕입차는 lastCome 맵에 최근 들어온 입차처리만 해주면 끝이고 ❌출차는 해당 차에 대한 sumTime기록이 있다면 ..
문제 링크성공 여부(걸린 시간): 성공 (53분 16초)아이디어처음에는 0.5초 이길래 DP인가 하고 엄두가 안나서 못풀었는데문제조건을 보니 N이 최대 10이라 자신감이 생겨서 풀어보았다. 코드의 대략적인 순서는 이렇다. 1. 일단 N개의 노드를 두 선거구로 나누어준다. (1또는 2로)DFS로 1과 2 선거구로 나눈 결과가 나왔다면 그것을 String으로 바꾸어서 ArrayList에 저장해준다. 2. 같은 선거구끼리 연결되어 있는지 확인저장된 선거구가 기록된 String을 하나씩 순회하며 서로간의 선거구가 연결되어 있는지 확인한다.이 과정에서 나는 BFS를 2번 돌아주었다.(1번 선거구 1번, 2번 선거구 1번) 3. 방문안한 노드 확인그렇게 모든 BFS가 종료되고 만약 방문처리가 안된 노드가 있다면 연..
문제 링크아이디어1. 내가 생각한 아이디어는 8개의 캐릭터를 8!로 일렬로 나열한다. -> 백트레킹으로 조합하여 ArrayList에 저장2. 길이가 8이 되었을때 순서대로 나열한 ArrayList에서 indexOf로 index를 받아와 조건에 있는 두 캐릭터의 index차이를 구해서조건에 부합하는지 operand에 맞게 검사해주고 만약 조건에 안맞으면 그냥 return3. 부합하는 경우에는 static result에 +1씩해준다.4. 마지막에 출력해주면 끝.정답 코드import java.util.*;class Solution { static int result; static char [] name; static String [] datas; public int solution(int..
문제 링크성공 여부(걸린 시간): 성공(36분6초)아이디어처음에 이 문제를 보고 엥 이게 Lv2라고 1아닌가 생각할 정도로 간단하게 구현해서 제출했는데 60점이 나왔다.내가 놓친 부분이 있었다. 그건바로 문제에서 LRU방식으로 구현하라 했는데난 miss가 났을때 큐가 가득차있다면 제일 앞에 있는 city를 빼고 있었던 것이었다.LRU(Least Recently Used) 이름 그대로 최근에 최소로 사용된이라는 뜻인데 운영체제 배울때 배운 스케줄링 기법이었다.만약 내가 이걸 모르는 상태로 풀었다면 문제 테스트케이스에도 나처럼 간단하게 풀어도 걸리지 않기에그냥 넘어갔을 것이고 시험때는 점수도 모르니 틀린지도 모르고 넘어갔을 생각을 하니 아찔했다. 각설하고 이제 어떻게 풀었는지 설명을 해보겠다.우선 난 캐시를..
문제링크-> 표 병합성공 여부(걸린 시간): 성공(2일)아이디어처음에 문제를 풀때는 매우 순조로웠다. 각 기능인 update(2가지), merge, unmerge, print 총 5개의 함수를 구현하여전체 명령문을 인자 반복문을 통해 수행해주며 마지막에 결과를 출력해주고자 했다. 함수별로 정리를 해볼 것인데 그전에 union-find를 통해 merge와 unmerge를 구현해주어야 다른 함수들도 제대로 동작할 수 있기에 union-Find 코드부터 작성을 해주었었다.static int find(int x, int y){ if(parent[x][y]==x*50+y){ return x*50+y; } table[x][y] = null; re..
암호코드 링크문제상근이와 선영이가 다른 사람들이 남매간의 대화를 듣는 것을 방지하기 위해서 대화를 서로 암호화 하기로 했다. 그래서 다음과 같은 대화를 했다.상근: 그냥 간단히 암호화 하자. A를 1이라고 하고, B는 2로, 그리고 Z는 26으로 하는거야.선영: 그럼 안돼. 만약, "BEAN"을 암호화하면 25114가 나오는데, 이걸 다시 글자로 바꾸는 방법은 여러 가지가 있어.상근: 그렇네. 25114를 다시 영어로 바꾸면, "BEAAD", "YAAD", "YAN", "YKD", "BEKD", "BEAN" 총 6가지가 나오는데, BEAN이 맞는 단어라는건 쉽게 알수 있잖아?선영: 예가 적절하지 않았네 ㅠㅠ 만약 내가 500자리 글자를 암호화 했다고 해봐. 그 때는 나올 수 있는 해석이 정말 많은데, 그..
문제링크문제 설명처음에 동기들과 모의코테를 치면서 이 문제를 풀게 되었었는데 이 문제를 풀때는 와 이게 뭐지? BFS or DFS로 풀었을때 시간이 말도 안되게 나오는 것을 미리 계산해보니 도저히 엄두가 안났었다.DP로 풀어야 하는것은 알겠는데 아무래도 생각이 나질 않는 것이였다. 그 당시에 머리가 하얘지면서 한숨만 나왔었다. 그래서 나중에 이 문제를 다른사람들은 어떻게 풀었는지에 대해서 꼭 알아보고자 했고 그다음날인 오늘 바로 찾아보았는데... 아니라 다를까 DP였다. 생각을 조금만 더해보면 풀어볼 수도 있었겠다는 생각이 들었다.물론 그 상황에서 점화식을 빠르게 떠올리는 것이 관건이고 실력이지만 아무튼 아쉬운... 😭(사실 DP특성상 코드로 구현은 쉽지만 점화식를 구상하는게 8할이라고 생각함) 각설하..
문제 설명 -> 프로그래머스 압축 이동아이디어사실 이 문제는 LZW에 대한 어느정도 이해도가 있으면 Lv.2지만 없다면 3 그이상이라고 생각된다.난 작년에 알고리즘 시간에 배웠던게 어느정도 기억이 나서 기억을 더듬으며 문제에서 주어진 순서대로 구현만 해주면 되었는데 그게 아니였다면 아마 못풀었을 것이라고 장담한다.ㅎㅎ 우선 LZW의 동작순서에 대해서 이해가 완료되었다면 나의 구현방식에 대해서 설명해보겠다. 처음의 길이가 1인 A~Z와 추후에 새로 생길 단어에 대한 사전을 저장해줄 ArrayList를 만들어주었다. 압축을 하기위해선 그 단어와 그의 순번을 저장하는데 ArrayList에 순서대로 넣기에 indexOf한 값의 +1을 하면 압축된 문자에 대한 수가 나오게 된다. 그런데 나중에 불러올때 어떻게 검..
문제채영이는 거울을 들여다보는 것을 참 좋아한다. 그래서 집 곳곳에 거울을 설치해두고 집 안을 돌아다닐 때마다 거울을 보곤 한다.채영이는 새 해를 맞이하여 이사를 하게 되었는데, 거울을 좋아하는 그녀의 성격 때문에 새 집에도 거울을 매달만한 위치가 여러 곳 있다. 또한 채영이네 새 집에는 문이 두 개 있는데, 채영이는 거울을 잘 설치하여 장난을 치고 싶어졌다. 즉, 한 쪽 문에서 다른 쪽 문을 볼 수 있도록 거울을 설치하고 싶어졌다.채영이네 집에 대한 정보가 주어졌을 때, 한 쪽 문에서 다른 쪽 문을 볼 수 있도록 하기 위해 설치해야 하는 거울의 최소 개수를 구하는 프로그램을 작성하시오.거울을 설치할 때에는 45도 기울어진 대각선 방향으로 설치해야 한다. 또한 모든 거울은 양면 거울이기 때문에 양 쪽 모..
문제당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 지나갈 수 없거나, 비어있어서 지나갈 수 있게 되어있다. 당신은 각 칸에서 인접한 6개의 칸(동,서,남,북,상,하)으로 1분의 시간을 들여 이동할 수 있다. 즉, 대각선으로 이동하는 것은 불가능하다. 그리고 상범 빌딩의 바깥면도 모두 금으로 막혀있어 출구를 통해서만 탈출할 수 있다.당신은 상범 빌딩을 탈출할 수 있을까? 만약 그렇다면 얼마나 걸릴까?입력입력은 여러 개의 테스트 케이스로 이루어지며, 각 테스트 케이스는 세 개의 정수 L, R, C로 시작한다. L(1 ≤ L ≤ 30)은 상범 빌딩의 층 수이다. R(1..