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