일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- mysql hy000 에러
- replace()
- 백준 1806번 부분합 java
- 프로그래머스 java
- append
- Java
- Stack
- dp
- 프로그래머스
- map
- 백준 2473번 세 용액 - java
- StringBuilder
- 집합 11723
- ac 5430번
- toUpperCase
- 백준 1043번 거짓말 - java 분리 집합
- HashSet
- kotlin
- StringTokenizer
- 백준 2467번 용액 자바 - 이분탐색
- 최소 힙 1927
- 코틀린기초
- hash
- 백준 3190번
- 18111번 마인크래프트 - java 구현
- HashMap
- 백준 1197번 최소 스패닝 트리 - java
- 백준 1647번 도시 분할 계획 - java
- 프로그래머스 자바
- 백준 1541
- Today
- Total
목록분류 전체보기 (175)
말하는 컴공감자의 텃밭
보호되어 있는 글입니다.
부분합 수열이 주어지고, 연속된 수들의 합이 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..
숫자 카드 2 카드의 개수가 몇개인지 파악해야하고, 없다면 0을 출력해야한다.간단하게 HashMap 자료구조를 활용했고 getOrDefault 를 활용해서 개수 저장해줬다. 5분커엇.. 12345678910111213141516171819202122232425262728293031323334353637import java.io.*;import java.util.*; public class Main { // 숫자 카드 2 public static int N, M; public ..
N과 M (9) 중복되는 수열을 제외하고 출력해주는게 포인트이다따라서 정렬한 arr 배열에서 수로 수열을 만들때 이전 수와 같은지 체크해주었다.if (!visit[i] && arr[i] != prev) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import java.io.*;import java.util.*; public class Main { // N과 M (9) public static int N, M; ..
아우 더워라 달팽이는 올라가고 싶다 간단해도 문제 지문을 잘 읽자.. 꼮!입력값이 일단 10억이다.. Long 사용해주자 먼저 도착하면 B만큼 미끄러지지 않으므로 목표거리는 V-B 가 이동할 거리이다.이후 시간당 A-B 만큼 이동하므로 이 값으로 목표를 나눴을때 나머지가 있으면 +1 해주고딱 알맞게 갈 수 있으면 목표거리 / 시간당 이동거리 로 구해주면 된다. 1234567891011121314151617181920212223import java.io.*;import java.util.*; public class Main { // 달팽이는 올라가고 싶다 public&n..
슬 코테 대비하듯 랜덤으로 문제를 뽑아 난이도랑, 문제 유형을 끄고 풀어보자.. 호호 파도반 수열 규칙적으로 반복되고, 이전의 수를 활용하는 경우기에 DP가 떠올랐다.숫자의 규칙을 찾아 점화식을 작성해 주었다.12345678910111211122345791216 4번째부터 1번과 3번의 변을 더해 한 변이 완성이 되었고,5번째는 4번의 변을 활용해 삼각형이 그려졌다. 6번부터는 1번과 5번의 변을 활용해 그려졌고, 이후 인덱스는 이 규칙이 반복되는 특징이 있었다.점화식 Dp[i] = Dp[i-1] + Dp[i-5] 100까지 진행되면 오버플로우가 발생하므로, Long으로 선언해 주었다. 1234567891011121314151617181920212223242526272829303132333435363..
어느덧 10일차.. 주말 어디갔어..ㅋㅋ ㅋ근데 백수라 매일매일이 주말같아요.. 테트로미노 문제를 잘 안읽었을때는 아..? 너무 어려운데 생각했었다먼저 저 퍼즐 5개를 다쓰는줄.. 알았었다 호호 숫자가 적힌 보드가 주어지고, 해당 보드에 블록들 1개를 잘 배치해서 최대값을 구하는 문제였다.대칭, 회전 전부 되므로 여간 까다롭게 느껴졌다. 블럭이 가능한 형태 모두를 하드코딩으로 넣어서.. 풀어주었다..근데 고생해서 풀고 나니까 이거 그냥.. 이거 그냥 방향 맞춰서 4칸 탐색하면 됐구나적다보니까 생각이 나버렸다 모야 진짜네.. 그냥 해당 방향으로 3칸 탐색하는 완전탐색이었구나 물론 'ㅗ' 모양 블럭은 따로 로직을 만들어줘야겠다...허탈하네 ㅋㅋ ㅋ ㅋ 중간에 사실 이상하게 나와서 하나하나 다 따져서 ..
내려가기 간단하다. 가로 3칸인 상태에서 1칸씩 밑으로 내려오고 인접한곳으로만 내려올 수 있다.이 경로들에 숫자가 있고 이 값들의 합을 구해야한다.2가지가 요구되는데 최대값과 최솟값을 구하는 문제다. DP가 떠올랐고, 점화식 넣어주자Dp[i][j] 가 현재 내려오는 장소에 따라 다르게 조건을 넣어주자. 첫번째 칸이라면 첫번째와 두번째칸을 비교해주고,두번째 칸이라면 세칸 모두를 비교해준다.세번째 칸이라면 두번째와 세번째칸을 비교해주었다.maxDp[i][0] = Math.max(maxDp[i - 1][0], maxDp[i - 1][1]) + map[i][0];maxDp[i][1] = Math.max(Math.max(maxDp[i - 1][1], maxDp[i - 1][2]), maxDp[i - 1][0])..