본문 바로가기

algorithm/프로그래머스

(40)
프로그래머스_모음사전(JAVA) [문제 풀이] 수학과 완전탐색을 이용하여 문제를 풀었습니다. 모음사전 문제는 주어진 문자열이 AEIOU로 이루어진 사전의 몇번째로 등장하는지를 찾는 문제입니다. 문제를 풀 수 있는 방법은 여러가지가 있지만 수학, 완전탐색 두 가지 방법으로 풀어보았습니다. 수학으로 푸는 방법은 아래와 같습니다. 자리별 모음의 순번을 담은 배열을 생성합니다. AAAAA ~ AAAAE 1 AAAA ~ AAAE (1*5) + 1 = 6 AAA ~ AAE (1*5+1) * 5 + 1 = 31 AA ~ AE ((1*5+1) * 5 + 1) * 5 + 1 = 156 A ~ E (((1*5+1)*5+1)*5+1)*5+1 = 781 해당 배열을 이용하여 자리 수 * index 수를 곱해서 더합니다. 완전탐색으로 푸는 방법은 아래와 같습..
프로그래머스_피로도(JAVA) [문제 풀이] 완전 탐색을 이용하여 문제를 풀었습니다. 피로도 문제는 주어진 던전을 어떤 순서로 도는 것이 가장 많은 던전을 도는지를 찾는 문제였습니다. 이를 구하기 위해 던전을 갈 수 있는 모든 경우의 수를 찾아 주었고, 그 중 던전의 수가 가장 많은 것을 찾아 주었습니다. 구현 방법은 아래와 같습니다. 던전의 갯수 만큼 visited 배열을 생성해 줍니다. 던전의 첫번째 순서를 정해주며 DFS를 시작합니다. DFS는 아직 방문하지 않은 던전이면서 현재 가진 피로도 K가 던전 필요 피로도 보다 높을 경우 count를 1 높여줍니다. [JAVA] class Solution { int max = 0; boolean visited[]; public int solution(int k, int[][] dunge..
프로그래머스_H-Index(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 단순 정렬을 이용하여 문제를 풀었습니다. H-Index 문제는 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값을 찾는 문제입니다. 즉, 정렬 후 배열의 총 길이에서 i를 뺀 값 보다 원소가 커지는 순간을 구하는 문제입니다. [JAVA] import java.util.*; public class Solution { public ..
프로그래머스_K번째수(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [JAVA] import java.util.*; class Solution { public int[] solution(int[] array, int[][] commands) { ArrayList answerList = new ArrayList(); for(int i = 0; i < commands.length; i++){ //SUB 배열을 담을 List ArrayList subList = new ..
프로그래머스_디스크 컨트롤러(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 우선순위 큐를 이용하여 문제를 풀었습니다. 디스크 콘트롤러 문제는 작업의 시작부터 작업이 끝나는 시간 길이의 최소 평균을 구하는 문제였습니다. 하나의 작업이 끝나는 시간안에 들어온 작업 중 가장 작업시간이 짧은 것을 선택하는 문제입니다. 구현방법은 아래와 같습니다. jobs 배열을 시작 시간 순서대로 정렬 해줍니다. 끝나는 시간이 짧은 것으로 정렬하는 우선순위큐를 생성합니다. 우선순..
프로그래머스_다리를 지나는 트럭(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 큐를 이용하여 문제를 해결하였습니다. 문제에서 구하고자 하는 것은 트럭이 순서대로 들어 대기하고 있고 다리의 길이와 허용 무게가 정해져 있을 때, 걸리는 최소 시간을 구하는 문제입니다. 다리의 올라와 있는 트럭의 수와 무게를 비교하며 시간이 흐름에 따라 변하는 것을 큐를 이용하여 구현했습니다. 구현한 방식은 아래와 같습니다. 먼저 트럭 배열을 순회합니다. 트럭 배열을 순회하며 4가지..
프로그래머스_프린터(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 우선순위큐를 이용하여 문제를 풀었습니다. 우선순위 작업 배열과 위치가 주어 졌을 때, 해당 작업은 몇번째에 작업이 실행 되는지 찾는 문제입니다. 해당 문제를 풀기 위해서 우선순위큐를 이용해 작업 중요도를 넣어 주었고 배열을 순회하면서 큐와 비교하는 식으로 문제를 해결했습니다. 구현한 방식은 아래와 같습니다. 주어진 배열을 역순으로 우선순위큐에 삽이하여 준다. 큐의 앞쪽 원소와 배열의..
프로그래머스_올바른 괄호(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 스택을 이용하여 문제를 풀었습니다. 괄호로 구성 된 문자열이 주어졌을 때, 괄호가 올바르게 되어있는지를 찾는 문제입니다. 구현한 방식은 아래와 같습니다. 문자열을 순회 하면서 문자열 원소가 '(' 경우 스택에 넣어준다. 문자열 원소가 ')' 인 경우 스택이 비어있거나 스택의 최상단이 ')' 경우 false를 반환한다. 문자열 순회가 끝난 후 스택이 비어있지 않으면 false를 반환하..