문제링크 문제 풀이 과정 효율성을 통과하기 위해서 HashMap 을 사용하여 문제를 접근 하였다. HashMap 의 key 는 현재 지정한 방 번호이며, value 값은 현재 지정한 방의 다음 위치를 나타낸다. 예약하고자 하는 방의 번호가 예약 되었는지 여부를 containsKey 를 통해서 빠르게 찾을 수 있다. 키가 존재 하면 이미 예약된 방이며, 키가 없다면 예약이 가능하다. 이 문제는 재귀방식으로 코드를 작성해야지 효율성 테스트를 통과할 수 있다. 처음에는 재귀 방식이 아닌 반복문으로 작성 하였는데 정확성은 맞지만, 효율성에서 모두 다 통과하지 않는 상황이 생긴다. 전체코드
문제링크 문제 풀이 과정 문자열 일부분에 PPAP 가 있을 때 이 문자열을 P 로 치환을 하여 마지막에 문자열 P 하나만 남아 있다면 이 문자열은 PPAP 문자열이다. 처음에는 이 문제를 문자열을 배열로 변환한 뒤 스택을 이용하여 풀었더니 시간초과가 되었다. 문자열을 배열로 변환하지 않고 문자열의 인덱스를 이용하여 문제를 풀었더니 해결되었다. 문자열에서 P 가 나오면 P 의 갯수를 카운트를 해준다. 이것을 A 가 나올때까지 카운트 해준다. A 가 나왔을 때 P 의 갯수가 2개 이상이며, 다음 문자열이 P 일때만 PPAP 문자열이 되므로, P 의 수를 한개 줄여주고 문자열의 인덱스를 증가시킨다. 여기서 P 의 갯수를 한개 줄이는 PPAP 는 다시 P 로 치환되기때문에 다시 P 가 추가 된다. 결국 -2 +..
문제 링크 문제 풀이 과정 이 문제는 탐색을 통해서 해결해한다. 다이나믹 프로그래밍으로 해결 하기위해서는 우선 dp 용 배열을 하나 만들어 둔다. 탐색 할때 첫번째 행과 열일 때는 별도의 탐색을 하지 않는다 첫번째 열과 행이 아니면서 1일때는 현재 기준으로 위, 왼쪽, 왼쪽 대각선의 값을 확인 해봐야한다. 그 중에서 최소값에다가 + 1을 한 값이 사각형의 크기가 된다. (1, 1) 인 경우에는 현재값이 1이라 위, 왼쪽, 왼쪽 대각선의 값을 비교해야한다. 이 세개의 최소 값은 0 이고 이 값에 + 1한 값은 1이 된다. (2, 2) 일때는 위, 왼쪽, 왼쪽 대각선의 값의 최솟값이 1이며, 이 값에 + 1 하면 2가 된다. 여기서 나온 2는 이 사각형의 크기가 된다. 전체 코드
문제링크 문제 풀이 과정 이 문제의 알고리즘 분류는 투 포인터라서 투 포인터로 쉽게 해결 할 수 있었다. 현재 몸무게를 p1, 기억하는 몸무게를 p2 로 지정 한 뒤 문제를 풀었다. p1 * p1 - p2 * p2 를 한 결과 값이 n 보다 작으면 p1 을 증가하였고, n 보다 클 때는 p2 를 증가하였다. 결과 값이 n 과 같을 때는 list 에 값을 저장을 해두었다. 더이상 값이 없을 때는 p1 * p1 - p2 * p2 결과 값이 n 보다 크면서 p1 - p2 값이 1 이 반복 된다. 이때는 반복문을 종료하면 된다. 전체 코드
문제 링크 문제 풀이 과정 이 문제를 처음 접했을 때 어떤 접근 방식을 이용하여 풀어야할지 고민을 많이 했다. 결국은 이 문제의 답은 이진 탐색을 이용하는 것이다. 이진 탐색으로 바위 간격의 최소값을 mid 값으로 정해두고 해결하면된다. 바위의 간격은 항상 정렬 되어 있지 않으므로 정렬 한 뒤에 시작한다. 정렬하고 나면 바위의 간격은 {2, 9, 3, 3, 4, 4} 가 된다. 여기서 중간 값은 14가 된다. 첫번째 바위와 의 거리가 2이고, mid 값보다 작으므로 바위를 한개를 제거해준다. 그러면 바위의 간격이 11이 된다. 11은 mid 보다 작으므로 다음 바위도 제거해준다. 첫 바위와의 거리가 14가 되고, mid 보다 같으므로 다음 바위를 검사한다. 다음 바위와의 거리가 3이고, 더이상 제거할 바..
문제링크 문제 풀이 방법 처음에 이 문제를 접했을 때는 이진 탐색으로 해결하려고 했다가 코드가 더 복잡해지고 시간 초과 될 것 같아서 다른 방법을 찾아야했다. 규칙을 찾으면 생각보다 쉽게 해결 되는 문제이다. 문제에 있는 예제로 설명을 하면, 우선 주어진 추들을 정렬을 해야한다. 1번추로 측정 할 수 있는 무게는 1이다. 2번째 추까지 이용하여 측정 가능한 무게는 2이다. 2번째까지 측정 가능한 무게는 2이며, + 1을 하면 3이다. 3은 3번째 추(2)보다 크므로 3은 측정이 가능하며, 3번째까지 측정 가능한 무게는 4가 된다. 4번째 추를 이용하여 측정 가능한 무게는 7이다. 5번째 추를 이용하여 측정 가능한 무게는 13이다. 6번째 추를 이용하여 측정 가능한 무게는 20이다. 여기서 20 + 1을 ..
문제링크 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 싶어 한다. 토마토를 창고에 보관하는 격자모양..
문제링크 문제 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록), B(파랑) 중 하나를 색칠한 그림이 있다. 그림은 몇 개의 구역으로 나뉘어져 있는데, 구역은 같은 색으로 이루어져 있다. 또, 같은 색상이 상하좌우로 인접해 있는 경우에 두 글자는 같은 구역에 속한다. (색상의 차이를 거의 느끼지 못하는 경우도 같은 색상이라 한다) 예를 들어, 그림이 아래와 같은 경우에 RRRBB GGBBB BBBRR BBRRR RRRRR 적록색약이 아닌 사람이 봤을 때 구역의 수는 총 4개이다. (빨강 2, 파랑 1, 초록 1) 하지만, 적록색약인 사람은 구역을 3개 볼 ..
- Total
- Today
- Yesterday
- 자바공부
- 프로그래머스 자바
- 코딩테스트 준비
- 코딩테스트
- 프로그래머스
- 코테공부
- 주니어 개발자 취업 준비
- 취업 준비
- 백엔드 개발자
- 백준
- 알고리즘공부
- 코테준비
- 백엔드 개발자 기술 면접 준비
- 프로그래머스 카카오
- 알고리즘 공부
- 개발자 취업 준비
- 취준
- 자바
- 개발자 면접 준비
- 백엔드 개발자 취업 준비
- 코딩테스트 공부
- 코딩테스트공부
- 제로베이스 백엔드 스쿨
- 제로베이스 백준 장학금
- 취업준비
- java
- 기술 면접 준비
- 알고리즘
- 개발자 취준
- 코테 준비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |