일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- 백준 2467번 용액 자바 - 이분탐색
- 백준 14938번 서강그라운드
- StringBuilder
- 프로그래머스 java
- 프로그래머스
- ac 5430번
- 코틀린기초
- StringTokenizer
- 백준 3190번
- append
- 백준 2473번 세 용액 - java
- hash
- replace()
- HashMap
- Stack
- 백준 1043번 거짓말 - java 분리 집합
- toUpperCase
- dp
- kotlin
- 백준 1806번 부분합 java
- mysql hy000 에러
- map
- 백준 1197번 최소 스패닝 트리 - java
- 프로그래머스 자바
- 18111번 마인크래프트 - java 구현
- 백준 1647번 도시 분할 계획 - java
- HashSet
- 최소 힙 1927
- 백준 1541
- Today
- Total
목록알고리즘/Backjoon - Java (79)
말하는 컴공감자의 텃밭
아우 더워라 달팽이는 올라가고 싶다 간단해도 문제 지문을 잘 읽자.. 꼮!입력값이 일단 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])..
곱셈 처음에는 수가 커서 해결이 안 되나 했다. 21억 이하 자연수니까~그래서 나머지 연산에서 수학적으로 접근해서 미리미리 나머지 계산을 처리하고 가야 하는 문제인가..? 라고접근했었다. 시간을 너무 뺏겼다 일단 10의 11승 12의 나머지는? 계산을 해보자 먼저 10을 Math.pow() 메서드를 이용해 11번 곱할 것이다.이후 12로 % 연산해줄 테고, 그렇다면 B만큼의 연산을 해야 한다는 소리다.시간복잡도는 O(N) 이 되겠다.하지만 우리에게 주어진 시간은 0.5초.https://hb-in99.tistory.com/173 알고리즘 시간관련 - 시간 제한, 시간 복잡도우리는 문제를 풀면서 알고리즘 문제가 어떤 유형의 문제인지 판단해야한다.그 중 한가지 팁인데 시간제한을 보는것이다. 인풋에 대한 적..
잃어버린 괄호 아이고 세준아 누가 입력을 이렇게 넣으래 귀찮게시리일단 그리디한 방식은 -뒤는 모두 더해주면 가장 최솟값으로 만들어줄 수 있다.따라서 -를 기점으로 숫자를 모두 더해주고, 이후 + 연산을 처리해 주면 가장 작은 값이다. 숫자와 연산자를 나누는 건 split 처럼 StringTokenizer로 나눠줍시다.StringTokenizer stSub = new StringTokenizer(br.readLine(), "-"); 요로코롬 빼기 ('-') 를 기준으로 나눌 수 있다. 다만 맨 첫 번째는 무조건 양수다. 따로 처리해 주는 것에 유의1. 맨 첫 번째는 더해준다.2. '-' 빼기를 기점으로 숫자와 연산자를 먼저 나눈다.3. 나눈 부분을 + 연산 처리를 통해 더한다.4. 이후 나머지 부분 + ..
초등학생이 된 기분 로프 그리디가 풀고 싶어 하나 더 풀었던 문제,로프 수 만큼 병렬적으로 무게를 감당하고 이 로프들로 최대 중량을 구해내는 코드를 작성하면 된다.간단하게 로프 길이가 긴 순서로 정렬하고, 가장 낮은 길이를 기준으로 로프 * 인덱스로 업데이트 해줬다. 123456789101112131415161718192021222324import java.io.*;import java.util.*; public class Main { // S4 로프 public static void main(String[] args) ..
증가 배열 만들기 1,1 에서 시작해서 우측이나 아래쪽으로 쭉 오름차순 패턴을 띄는 배열을 만들면 된다.간단하게 i,j 로 생각해서 값을 넣어주었다. 1,1 1,2 1,32,1 2,2 2,33,1 3,2 3,3 이게 이미 증가 배열이잖아.i-j -1 값을 넣어주었다. 123456789101112131415161718192021222324252627282930313233343536373839import java.io.*;import java.util.*; public class Main { // S5 증가 배열 만들기 static StringBuilder&n..
빨리 골드문제 더 풀어야하는데,, 나무 자르기 상근 교수님.. 잘 계시죠..? 나무의 h 높이 이상 부분을 자른 부분을 상근이가 갖게되는데,이 자르는 높이의 최대값을 구해보는게 문제이다. 대충 나무가 이렇게 가지각색의 길이로 주어진다면 내가 자른 윗부분들의 합이 M이상이어야 한다.이분 탐색으로 저 높이를 찾아보자. 먼저 이분탐색을 low와 hight 또는 left right 등 최소와 최대를 두어주고, 그 가운데 mid 값을 조정하여값을 찾는 알고리즘이다.우리가 숫자 up & down 게임을 할때 1~100이라면 50부터 불러서 줄이는것과 같은 로직이다.만약 4가 정답이라면 1~100까지 하나하나 물어보는게 아닌100 ▶ 50 ▶ 25 ▶ 12 ▶ 6 ▶ 3 ▶ 4 이런식으로 7번만에 빠르게 찾아낼 수..
N과 M (4) 중복이 안되게, 앞수보다는 뒤 수가 더 크게 수열을 만들어 주면 된다.숫자 길이에 맞게 depth를 짜주고, start로 중복을 막아주어 수열을 뽑아내면 꿋. 12345678910111213141516171819202122232425262728293031323334import java.io.*;import java.util.*; public class Main { // S3 N과 M(3) static int N, M; static int[] arr; &n..