일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- hash
- HashMap
- 백준 14938번 서강그라운드
- 프로그래머스 java
- HashSet
- 백준 1806번 부분합 java
- replace()
- append
- 18111번 마인크래프트 - java 구현
- ac 5430번
- 코틀린기초
- toUpperCase
- 백준 1541
- Stack
- 백준 1197번 최소 스패닝 트리 - java
- 백준 1647번 도시 분할 계획 - java
- mysql hy000 에러
- StringBuilder
- kotlin
- StringTokenizer
- 백준 2473번 세 용액 - java
- 백준 2467번 용액 자바 - 이분탐색
- 백준 3190번
- 프로그래머스 자바
- 최소 힙 1927
- dp
- Java
- 백준 1043번 거짓말 - java 분리 집합
- map
- Today
- Total
목록분류 전체보기 (177)
말하는 컴공감자의 텃밭
어느덧 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 알고리즘 시간관련 - 시간 제한, 시간 복잡도우리는 문제를 풀면서 알고리즘 문제가 어떤 유형의 문제인지 판단해야한다.그 중 한가지 팁인데 시간제한을 보는것이다. 인풋에 대한 적..
우리는 문제를 풀면서 알고리즘 문제가 어떤 유형의 문제인지 판단해야한다.그 중 한가지 팁인데 시간제한을 보는것이다. 인풋에 대한 적절한 시간 복잡도N의 범위가 500: 시간 복잡도 O(N^3) 이하N의 범위가 2,000: 시간 복잡도 O(N^2) 이하N의 범위가 100,000: 시간 복잡도 O(N log N) 이하N의 범위가 10,000,000: 시간 복잡도 O(N) 이하N의 범위가 10,000,000,000: 시간 복잡도 O(log N) 이하 N의 범위가 500 : 시간 복잡도: O(N^3) 이하500^3 = 125,000,000 예시 알고리즘: 플로이드-워셜, 3중 for 문을 사용하는 알고리즘N의 범위가 2,000 : 시간 복잡도: O(N^2) 이하2,000^2 = 4,000,000 예시 알고리즘:..
잃어버린 괄호 아이고 세준아 누가 입력을 이렇게 넣으래 귀찮게시리일단 그리디한 방식은 -뒤는 모두 더해주면 가장 최솟값으로 만들어줄 수 있다.따라서 -를 기점으로 숫자를 모두 더해주고, 이후 + 연산을 처리해 주면 가장 작은 값이다. 숫자와 연산자를 나누는 건 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 2 3 42 3 4 13 4 1 2 이런식으로 변경을 해줘야 했다.큐를 써도 됐는데, 문제가 쉬워서 "아 그냥 후딱풀자~!"마인드라 오히려 돌아갔다..substring 활용해서 s = s.substring(1) + s.charAt(0); 로 회전시켜줬다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445import java.io.*;import java.util.*; public class Solution { public i..
증가 배열 만들기 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..