반응형

전체 글 198

[백준] 14889 : 스타트와 링크 (JAVA)

https://www.acmicpc.net/problem/14889 [풀이과정]N/2를 선택해주고 팀 능력치 계산해주기 [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;/*축가 - 평일 오후, 필참x사람 N명 (N은 짝수)N/2씩 스타트팀, 링크팀으로 나누기1번부터 N번.능력치 Sij는 i와 j가 같은 팀에 속했을 때의 능력치 (Sji와 다를 수 있음)i와 j가 같은 팀이면 Sij + Sji 가 더해짐.능력치 차이를 최소로 하려 함. */public class Main { static BufferedReader br = n..

백준/완전탐색 2025.04.28

[백준] 1931 : 회의실 배정 (JAVA)

https://www.acmicpc.net/problem/1931 [풀이과정]끝나는 시간을 기준으로 오름차순 정렬을 해주고끝나는 시간이 같을 때는 시작시간을 기준으로 오름차순 정렬을 해준다-> 기준을 안 잡아주거나 내림차순으로 하면 틀림-> 반례 중, 시작시간이 끝시간보다 느린 경우가 있음. 문제가 좀 이상함. [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Comparator;import java.util.PriorityQueue;import java.util.StringTokenizer;/*N개의 회의회의 시작시간, 끝나는 시간 주어짐겹치지 않게 하며 ..

알고리즘/정렬 2025.04.28

[프로그래머스] Level2 : 타겟 넘버 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이과정]처음엔 visited를 사용해서 -로 사용할 부분을 체크해서 계산했는데, 이렇게 되면 같은 케이스인데 다르게 취급되어서 중복된 값처리가 이루어지는 로직이었다.그냥 단순하게 풀면 되는 거였음.. 생각을 깊게 하고 버릇처럼 코드 짜는 걸 반성했다. [코드]import java.io.*;class Solution { static int cntNumbers, answer, targetNum; public int solution(i..

[프로그래머스] Level2 : 다리를 지나는 트럭 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이과정]테케로 문제 이해를 해야 해서 좀 힘들었다.바보처럼 이해를 못 해서 엄청 헤맸음..ㅠㅜ 그렇게 어려운 문제는 아니었는데queue를 이용했고 그냥 주어진 순서대로만 무게 되는지 체크해서 트럭 올려두면 된다 [코드]import java.io.*;import java.util.*;class Solution { public int solution(int bridge_length, int weight, int[]..

알고리즘/큐 2025.04.25

[프로그래머스] Level2 : 모음사전 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/84512?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이과정]처음엔 복잡하게 풀었다가 생각을 바꾸고 훨씬 간단한 코드로 통과했다.DFS 개념을 가져다가 풂. [코드]class Solution { static int answer = 0; static int number = 0; static String[] alphabet = {"A", "E", "I", "O", "U"}; public int solution(String word) { p..

[백준] 2573 : 빙산 (JAVA)

https://www.acmicpc.net/problem/2573 [풀이과정]계속 시간초과가 나서 미치는 줄 ㅠㅠ한 번의 탐색으로 가능한 작업을 여러 탐색으로 했던 게 문제였다.new보다는 fill로 배열을 재사용하는 게 더 낫다는 걸 배움. [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;/*칸의 높이는 바다와 인접한 면의 개수만큼 줄어듦.0이하로는 줄어들지 않음빙산이 두 덩어리 이상으로 분리되는 최소의 시간(년)을 구하기 */public class Main { static BufferedReader br = new BufferedReader(n..

백준/DFS BFS 2025.04.23

[백준] 16139 : 인간컴퓨터상호작용 (JAVA)

https://www.acmicpc.net/problem/16139 [풀이과정]처음엔 구간을 나눠서 탐색했는데 50점 받았다.값이 엄청 커져도 제대로 수행되려면 탐색을 줄여야 했기 때문에 누적합 방식으로 풂. 이게 맞는 방식이었다.알파벳이 26개이니까 한 번의 탐색으로 str.index까지 알파벳이 몇 개 있는지 저장했고(l, r) -> l - (r-1) 으로 값을 구했음 [코드-100점]import java.io.*;import java.util.*;/*특정 문자열, 특정 알파벳과 문자열의 구간 [l,r]특정 알파벳이 몇 번 나타나는지 구하기 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamRead..

알고리즘/DP 2025.04.23

[백준] 10799 : 쇠막대기 (JAVA)

https://www.acmicpc.net/problem/10799 [풀이과정]막대기를 자르는 레이저의 개수 + 1만큼 막대기가 증식함. 1) '(' 일 때stack에 넣어줌 2) ')' 일 때 -> 두 가지 경우로 나뉨먼저 pop해서 '('를 제거2-1) 레이저의 끝일 때stack에 있는 막대기 모두를 자르기 때문에 +stack.size를 해줌 2-2) 막대기의 끝일 때+1 해주기 [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Stack;import java.util.StringTokenizer;/*쇠막대기를 겹침.자신보다 긴 막대기 위에만 놓일 수 있..

알고리즘/스텍 2025.04.23

[백준] 11048 : 이동하기 (JAVA)

https://www.acmicpc.net/problem/11048 [풀이과정]점화식으로 안 풀어서 시간초과 났었음 ㅠㅠ 1. DP 값을 채워넣는 공간은 (1,1) ~ (N,M)2. 왼쪽, 위, 왼쪽위대각선 값 중 가장 큰 값을 가져오면서 값을 채움3. (0,0)~(N,M) 크기의 그래프로 계산 [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;/*NxM 미로가장 왼쪽 윗 방 (1,1), 가장 오른쪽 아랫 방 (N,M)각 방에는 사탕이 있음현재 위치 (1,1)에서 (N,M)으로 이동하려 할 때(r,c)에 있으면 아래,오른쪽,오른쪽..

알고리즘/DP 2025.04.23

[백준] 10816 : 숫자카드2 (JAVA)

https://www.acmicpc.net/problem/10816 [풀이과정]HashMap 사용.이분탐색 방식은 이분탐색을 두 번 돌려서 한 번은 left 값을, 한 번은 right 값을 구해서 개수를 구하기. [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;/*카드 N개정수 M개가 주어졌을 때 이 수가 적혀있는 카드를 몇 개 가지고 있는지 구하기 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static..

백준/자료구조 2025.04.14
반응형