'알고리즘 풀이' 카테고리의 글 목록
본문 바로가기
728x90

알고리즘 풀이150

[백준] 7662 이중 우선순위 큐 자바(Java) 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 풀이 TreeMap 자료 구조를 사용한다. TreeMap은 키값을 기준으로 즉시 정렬되는 자료 구조입니다. key = 정수, value = 입력된 횟수 최댓값(최솟값)의 입력 횟수가 2번 이상일 때는 입력 횟수 -1, 입력된 횟수가 1번이면 삭제한다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Str.. 2023. 6. 19.
[백준] 6198 옥상 정원 꾸미기 자바(Java) 풀이 기존에 지나온 빌딩 중 새로운 빌당보다 낮은 빌딩만 저장 마지막 서있는 곳보다 새로운 빌딩의 높이가 낮으면 같이 지나갈 수 있기 때문 스택에 가장 마지막 빌딩 높이(마지막 서있는 곳) 2023. 4. 13.
[프로그래머스] 더 맵게 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 우선순위 큐 사용 주석 참고 코드 import java.util.*; class Solution { public int solution(int[] scoville, int K) { int answer = 0; //우선순위 큐 사용 PriorityQueue pq = new PriorityQueue(); for(int i : scoville){ pq.add(i); } //스코빌 지수가 K 이상 .. 2023. 4. 11.
[백준] 2493 탑 자바(Java) https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 풀이 stack에 탑의 위치, 높이를 저장 이전 탑의 길이) 현재 탑의 길이 이전 탑의 위치 표기 수신할 수 있는 탑이 없으면 0 표기 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack; import java.util.Str.. 2023. 4. 10.
[백준] 1874 스택 수열 자바(Java) https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 풀이 스택 활용 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] ar) throws Exception { .. 2023. 4. 9.
[프로그래머스] 땅따먹기 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 우선순위 큐 사용 코드 import java.util.*; class Solution { int solution(int[][] land) { int answer = 0; for(int i = 1; i < land.length; i++){ // 현재 밟은 칸을 제외한 값 저장 land[i][0] += Math.max(land[i - 1][1], Math.max(land[i - 1][2], la.. 2023. 4. 8.
[프로그래머스] 피로도 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 완전 탐색 DFS 코드 class Solution { static boolean[] visited; static int max = 0; void dfs(int k, int[][] dungeons, int cnt) { // 모든 케이스 순회 for (int i = 0; i < dungeons.length; i++) { int a = dungeons[i][0]; int b = dungeons[i.. 2023. 4. 6.
[프로그래머스] 연속 부분 수열 합의 개수 자바(Java) 풀이 원순열 특징 사용 {4,7,9,1,1} -> {4,7,9,1,1,4,7,9,1} 배열 늘리기 자기 자신부터, 원소의 길이만큼 더하기 코드 import java.util.*; import java.util.stream.*; class Solution { public int solution(int[] elements) { int[] newElements = new int[elements.length * 2]; // {4,7,9,1,1} -> {4,7,9,1,1,4,7,9,1} for(int i = 0; i < elements.length; i++) { newElements[i] = newElements[i + elements.length] = elements[i]; } Set set = new Hash.. 2023. 4. 5.
[프로그래머스] n^2 배열 자르기 자바(Java) 풀이 (1,1)(1,2)(1,3) (2,1)(2,2)(2,3) (3,1)(3,2)(3,3) 각 인덱스(y, x) 값 중 큰 값이 배열의 값 max(1,1)max(1,2)max(1,3) = 1 2 3 max(2,1)max(2,2)max(2,3) = 2 2 3 max(3,1)max(3,2)max(3,3) = 3 3 3 1차원 배열로 변환 idx / n = y의 인덱스 값 idx % n = x의 인덱스 값 코드 class Solution { public static int[] solution(int n, long left, long right) { int[] answer = new int[(int)(right - left) + 1]; for (int i = 0; i < answer.length; i++) {.. 2023. 4. 4.
[프로그래머스] 위장 자바(Java) 풀이 조합의 경우의 수는 A * B 코드 import java.util.*; class Solution { public int solution(String[][] clothes) { int answer = 1; HashMap map = new HashMap(); // 종류별 옷 카운트 for(int i =0; i 2023. 4. 3.
[프로그래머스] 귤 고르기 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 map 이용 코드 import java.util.*; class Solution { public int solution(int k, int[] tangerine) { int answer = 0; Map sizeMap = new HashMap(); // sizeMap data set (사이즈별로 정리) for(int size : tangerine) { sizeMap.put(size, size.. 2023. 4. 2.
[프로그래머스] 괄호 회전하기 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 아스키 코드 사용 코드 import java.util.*; class Solution { public int solution(String s) { int answer = 0; for(int i = 0 ; i 1 차이.. 2023. 4. 1.
[프로그래머스] 둘만의 암호 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주의사항 경계 값 주의 ex) a, z 경계 값 테스트 케이스 s= "ybc" skip = "az" index =1 오답 : "acd" 정답 : "bcd" index 값만큼 증가 시 'z'를 초과 시 'a'의 값의 존재 유무를 판단해야 한다. 코드 class Solution { public String solution(String s, String skip, int index) { String .. 2023. 3. 31.
[프로그래머스] 신고 결과 받기 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 신고 한 목록, 신고 당한 목록 정리 신고 한 목에서 신고 당한 사람 조회 신고 당한 사람의 사람의 사이즈 k와 비교 코드 import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; class Solution { public int[] solution(String[] id_list.. 2023. 3. 30.
[프로그래머스] 개인정보 수집 유효기간 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 terms에 나온 값을 today 기준으로 값을 빼줍니다. 1번 값을 map에 term에 나온 약관 종류 별로 저장합니다. privacies에 나온 값을 기준으로 저장된 map의 값과 비교해 이전이면 파기합니다. 코드 import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList.. 2023. 3. 29.
[프로그래머스] 신규 아이디 추천 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이(주석) & 코드 class Solution { public String solution(String new_id) { // length 3 ~ 15 // 1. upperCase to LowerCase // 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. new_id = new_id.toLowerCase(); //2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄.. 2023. 3. 28.
[프로그래머스] 공원 산책 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/172928 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 단순 구현 문제 범위와 장애물 존재 유무 확인 필 코드 class Solution { public int[] solution(String[] park, String[] routes) { int sx = 0; int sy = 0; char[][] arr = new char[park.length][park[0].length()]; for(int i = 0; i < park.length; i++.. 2023. 3. 28.
[프로그래머스] 크레인 인형뽑기 게임 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 2차원 배열을 스텍으로 변경 moves의 값에 따라 스텍에서 pop 쌓아둔 바구니 마지막 값과 비교 사실 1번 과정을 꼭 필요하진 않다. 코드 import java.util.Stack; class Solution { public int solution(int[][] board, int[] moves) { int answer = 0; Stack[] stacks = new Stack[board[.. 2023. 3. 27.
[프로그래머스] 바탕화면 정리 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 '#'이 있는 위치 중에 가장 왼쪽의 값, 가장 위쪽의 값, 가장 아래쪽의 값, 가장 오른쪽의 값 주의 사항 : 가장 아래쪽의 값, 가장 오른쪽의 값 은 + 1 필요 코드 class Solution { public int[] solution(String[] wallpaper) { int startH = -1; int lastH = -1; int startW = Integer.MAX_VALU.. 2023. 3. 26.
[프로그래머스] 대충 만든 자판 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/160586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 타겟 문자열 배열 조회 각 문자열의 문자를 keymap에서 index 값 조회 newIdx값이 -1 아니고, 기존 minIdx 값 보다 작으면 갱신 minIdx 값이 그대로면 -1, 아니면 minIdx + 1 값 코드 class Solution { public int[] solution(String[] keymap, String[] targets) { int[] answer = new in.. 2023. 3. 25.
[프로그래머스] 덧칠하기 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/161989# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 일반 풀이 배열 사용해서 페인트 영역 표시 다시 칠해야 하는 영역 시 페인트 칠하고 칠한 부분 스킵 간결한 풀이 다시 칠해야 하는 첫 영역 기록 -> cur cur + m -1 값(롤러 길이)이 다음 칠해야 하는 영역보다 작거나 같을 때 cur = 다음 다시 칠해야 하는 영역 2, 3 반복 일반 풀이 코드 class Solution { public int solution(int n, int m.. 2023. 3. 24.
[프로그래머스] 멀리 뛰기 자바(Java) 풀이 dp 사용 코드 class Solution { public long solution(int n) { long[] dp = new long[n + 1]; dp[0] = 1; dp[1] = 1; for(int i = 2; i 2023. 3. 23.
[프로그래머스] 예상 대진표 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 다른 사람 풀이 중 이진 코드로 풀이를 해서 어떤 식으로 풀었나 알아보려고 합니다. 코드 class Solution { public int solution(int n, int a, int b) { return Integer.toBinaryString((a-1)^(b-1)).length(); } } 어떤 원리로 동작하는지 보자. 아래 표는 1 ~ 8, 0 ~ 7, 0 ~ 7 값의 이진코드이다. 1과.. 2023. 3. 23.
[프로그래머스] 기사단원의 무기 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 시간 초과 나지 않게 배열 사용 class Solution { public int solution(int number, int limit, int power) { int[] count = new int[number + 1]; for (int i = 1; i 2023. 3. 21.
[프로그래머스] 문자열 나누기 자바(Java) https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설은 주석참고 class Solution { public int solution(String s) { // 마지막은 결국 분해되어 미리 카운트해둠 int answer = 1; // 첫 문자 저장 char c = s.charAt(0); // 같은 문자 카운트 int cc = 1; // 다른 문자 카운트 int dc = 0; for (int i = 1; i < s.length() -1 ; i++).. 2023. 3. 19.
728x90