본문 바로가기

알고리즘/문제 풀이50

프로그래머스: 이중 우선순위 큐 https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 오름차순으로 정렬되는 우선순위 큐와 내림차순으로 정렬되는 우선순위 큐를 생성한다. PriorityQueue queue = new PriorityQueue(); PriorityQueue maxPq = new PriorityQueue(Collections.reverseOrder()); 입력으로 들어오는 operation을 공백 기준으로 나눈다. 만약 입력이라면 queue와 MaxPq에 모두 값을.. 2023. 10. 10.
프로그래머스: 덧칠하기 https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 나의 풀이 방법 다시 칠하기로 정한 section 배열의 값을 돌면서 이동한다. 시작점은 section의 0번째 index부터 시작해서 롤러의 길이만큼 이동하면서 방문 표시한다. 사이클을 한번 돌면 answer를 1증가한다. 이 다음 사이클에서는 section의 1번째 index가 시작점이 된다. 만약 방문했다면 넘어간다. => 즉, section 배열에 있는 값을 확인하기 위해 visit.. 2023. 10. 7.
프로그래머스. 프로세스 https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 처음에는 프로세스의 index와 우선순위를 모두 가지고 있어야 한다고 생각해서, arraylist를 사용하려고 했다. 하지만 우선순위 큐(원소를 넣으면 value로 정렬되는 큐)를 사용하면 프로세스를 우선순위에 따라 쉽게 다룰 수 있다. 내부에 for문을 선언하여 priorities를 순차적으로 탐색한다. 현재 큐 제일 앞에 위치한 우선순위와 priorities에 담긴 우선순위를 비교하고, .. 2023. 10. 6.
프로그래머스. H-Index https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 인용횟수 배열을 오름차순으로 정렬한다. 배열 요소값을 h로 지정하여 H-Index 조건을 확인한다. h회 이상 인용된 논문 개수: 오름차순으로 정렬했을 때, 해당 요소에서 마지막 요소까지의 원소 개수를 말한다 [0, 1, 3, 5, 6] 으로 정렬된 배열에서 살펴보자. 코드 import java.util.*; class Soluction { public int solution(int[] ci.. 2023. 10. 2.
프로그래머스. 할인 행사 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 처음 이 문제를 풀이했을 때 배열 비교를 이용해서 풀이했는데, 해시맵 두 개를 활용하여 간단하게 풀이하는 방법도 있어 작성한다. 해시맵 map을 선언하여 want와 number 배열에서 목표하는 할인 정보(제품명, 수량)을 저장한다. (discount 배열을 탐색하여)에서 시작일마다 dMap을 선언해 10일간의 한일 정보를 저장한다. 생성된 dMap과 map을 비교하여, 수량이 다르면 is.. 2023. 10. 2.
P10844. 쉬운 계단수 https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 설명 Long[][] dp = new Long[N+1][10]; // N 자릿수(마지막 자릿수)에서 (0~9)의 자릿값 자릿수가 0이라면 -> 이전 자릿수는 1만 가능하다. 자릿수가 9라면 -> 이전 자릿수는 8만 가능하다. 자릿수가 0, 9가 모두 아니라면 -> 이전 자릿수에서 -1 또는 +1한 것이 모두 가능하다. 코드 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.. 2023. 9. 26.
P15683. 감시 https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 설명 설마... 모든 경우의 수를 순열로 구해서 하는 것인가? 했는데 그러했다. 이 문제는 cctv의 타입에 따라 탐색할 때, 방향을 잘 결정하는 것이 중요하다. 탐색할 수 있는 방향을 상우하좌로 표현한다면, 1, 2, 3, 4, 5번 cctv는 다음 방향을 갖는다. 코드 import java.io.BufferedReader; import java.io.FileInputStream; i.. 2023. 9. 20.
프로그래머스: 이상한 문자 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/12930 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 처음에 단어를 공백 기준으로 나눈 다음에, 단어별로 홀짝 인덱스를 판단해서 구현했다. 또한 단어는 하나 이상의 공백문자로 되어있다. 코드 class Solution { public String solution(String s) { String answer = ""; String[] words = s.split(""); int idx = 0; for(String word : words) { /.. 2023. 9. 15.
[☁️ 구름톤 챌린지] 4주차 학습일지 - 1 문제 16. 연합 전형적인 BFS 문제이다. 이 문제는 BFS에서 queue에 이 다음에 방문할 값을 넣을 때하는 방문 체크에서, 이 다음 값을 방문했는지 확인하는 것이 아닌 현재 값을 방문했는지 계속 확인하는 바람에 틀렸다. 방문 체크하는 값을 바꾸어주니 통과되는 것을 확인할 수 있었다. import java.io.*; import java.util.*; class Main { static int N, M; static int[][] map; static boolean[] visited; static int result; static Queue queue; public static void main(String[] args) throws Exception { BufferedReader br = new .. 2023. 9. 8.