일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 1541
- toUpperCase
- 프로그래머스 java
- 백준 14938번 서강그라운드
- 최소 힙 1927
- ac 5430번
- 백준 3190번
- 백준 1806번 부분합 java
- append
- StringTokenizer
- hash
- HashSet
- replace()
- Java
- 백준 1647번 도시 분할 계획 - java
- StringBuilder
- map
- 코틀린기초
- HashMap
- 백준 1043번 거짓말 - java 분리 집합
- kotlin
- 프로그래머스 자바
- 18111번 마인크래프트 - java 구현
- 백준 1197번 최소 스패닝 트리 - java
- dp
- mysql hy000 에러
- 프로그래머스
- Stack
- 백준 2467번 용액 자바 - 이분탐색
- 백준 2473번 세 용액 - java
- Today
- Total
목록전체 글 (177)
말하는 컴공감자의 텃밭

마인크래프트 문제를 요약하면 땅을 평평하게 하고 싶다.N x M 크기의 맵이있고, 내 인벤토리엔 B 개수의 블럭이 주어진다.맵의 숫자만큼의 높이로 블럭이 쌓여져 있고, 쌓는데 1초, 치우는데 2초가 걸린다.블럭이 존재하지 않다면 더이상 사용할 수 없고, 블럭을 치우면 인벤토리에 들어오게 된다. 모든 땅의 높이가 같게하는 방법에서 가장 최단 시간을 구하고,동시간대가 존재한다면 가장 높이 쌓은 높이를 출력하면 된다. 높이가 기본적으로 0부터 256까지이고 음수가 될수 없어 범위는 0 이다.시간계산이기 때문에 임의의 높이 X를 정하고, X를 기준으로 시간을 계산해 주었다.X보다 낮은 높이의 땅이라면 1 * (X - (현재 땅의 높이))X보다 높은 높이의 땅이라면 2 * Math.abs(X - (현재 땅의 높..

도시 분할 계획 마을에는 경로가 존재하고, 분리해서 이 경로를 없애면서 유지비용을 최대한 줄이는 문제다.마을 내부에서 서로 다른 집을 방문할 수 있어야하고, 마을이 분리됐다면 분리된 마을끼리는 연결되지 않아도 된다.이게 말로만 풀어쓰니까 이게 무슨..? 싶은데 그림으로 정리하면 편하다. 파란 부분을 A마을, 붉은 부분을 B마을이라고 하자,A 마을끼리 모두 연결되어 있고, B 마을끼리 모두 연결되어 있다.A와 B 마을 사이에 연결되는 부분이 오늘 문제의 포인트다.분할되는 부분이기 때문에 유지비가 들지 않는다.그림을 다시보면 모든 점이 연결된 그래프고, 우리는 유지비를 최소한으로 유지하고 싶으므로많은 경로가 존재한다면 그 중 유지비가 적은 값으로 연결을 시켜야 할것이다. 결국 이건 학부때 배웠던 최소 스패..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.

부분합 수열이 주어지고, 연속된 수들의 합이 S보다 크며, 크기가 가장 작은 수열의 길이를 찾는 문제이다.누적합과 슬라이딩 윈도우(투 포인터) 로 풀이가 가능할듯 했다. 나는 투 포인터로 풀었다.시작점부터 더해가면서 S보다 크다면 조건을 거쳐 가장 앞을 하나씩 지워주는 방식으로 진행했다. 누적합의 경우 누적합 배열을 만들어주고, 이분 탐색으로 범위를 좁히면 될것 같다. 🔽 투 포인터 풀이 12345678910111213141516171819202122232425262728293031323334353637383940import java.io.*;import java.util.*; public class Main { // 부분합&n..

용액 간단한 이분탐색 문제로 보인다.두 용액을 선택하여 더한 값이 0과 가깝게 만들어주는 문제이다. 다만 양수로만 주어지기도 하고, 음수로만 주어지기도 해서 조건을 조금 넣어줬다.오랜만에 이분탐색 푸니까 갱신하는 위치를 잘못잡아 시간을 조금 잡아먹었다 그래두 20분컷.. 꼴꼴 앞서 말한 조건을 위해 input을 받으면서 최소값과 최대값을 입력받아준다.변수명은 각각 min, max로 지정.-99 -41 -14 -8 -4 -1 0이런식의 입력이 주어진다면 max = 0, if(max 일테고저장된 배열의 끝 인덱스의 두 조합이 가장 0과 가깝겠다.▶ -1 0 출력1, 4, 11, 123, 200이런식의 양수 입력이라면 min = 200, if(min >= 0 ) == true일테고저장된 배열의 가장 앞 인..

아 오늘 좀 후딱 풀었네3문제 50분~ 집합 출력되는건 check, toggle인 점만 확인하면 더 쉽게 풀 수 있었을거 같다.비트마스킹으로 메모리 더 적게도 가능하겠다. 꼭 풀고 생각나 연산자설명&비트 단위 AND 연산 (비트가 모두 1이면 1 반환)|비트 단위 OR 연산 (비트 중 하나 이상 1이면 1 반환)^비트 단위 XOR 연산 (비트가 서로 다르면 1 반환)~비트 단위 NOT 연산 (0 -> 1, 1 -> 0 반환)비트 Left Shift 연산 (비트를 왼쪽으로 이동)>>비트 Right Shift 연산 (비트를 오른쪽으로 이동) 보니까 또 기억나네 커맨드 별로 기능을 나누어서 작성해주었다. Set 으로 푼 코드 🔽🔽 12345678910111213141516171819202122232425..