목록Programing/Programers (20)
T_era
1. 문제 내용요약가격 배열이 입력됐을 때 자기자신보다 낮은 가격이 나올 때 까지의 값을 측정2. 접근 방법 자기 자신의 높은 값이 나오면 해당 인덱스를 저장하고 낮은값이 나오면 저장한 값들의 역순으로 비교하여 시간을 측정하면 해결될 것으로 보인다 이에 적합한 방식으로 생각되는 스택으로 구현해 보았다3. 구현과정입력된 길이만큼 스택에 저장하고 비교하는 과정 for(int i = 0; i prices[i]){ int index = stack.pop(); answer[index] = i - index; } stack.push(i);}비교를 전부 하고나서 스택에 남은 값들 처리while (!stack.isEmpty()){ int index = stack.pop(); ..
1. 문제내용요약프로세스의 우선순위가 들어간 배열과 원하는 프로세스의 index가 주어지고프로세스가 우선순위대로 실행하되 우선순위가 아닌 프로세스는 가장 뒤로 밀린다이렇게 작동했을 때 index에 위치한 프로세스는 몇번째로 작동하는지 출력하라2. 접근방법 우선순위가 낮을 경우 마지막으로 이동을 생각했을 때 큐의 poll과 push를 이용해 값을 찾으면 될 것으로 보인다 큐에 index를 모두 저장하고 배열과 비교하여 큐의 index보다 큰 값이 있으면 큐의 맨뒤에 다시 push하는 과정을 거치면 해결될 것 같다 3. 구현 과정큐를 선언하고 배열의 크기만큼 index를 저장Queue queue = new LinkedList();for(int i = 0; i 결과를 출력할 count와 큐가 비어있지 않..
문제내용요약괄호로 이루어진 문자열이 들어왔을 때 ')'는 항상 '('가 나온 이후에 나와야한다조건이 충족하면 true 그렇지 않으면 false를 반환해라접근방법문자를 하나씩 읽어 '('가 나오면 스택에 넣고 ')'가 나오면 스택에서 빼는 과정을 거치면 쉽게 풀릴 것 같다만약 ')'가 나왔는데 스택이 비어있거나문자열이 끝났는데 스택이 비어있지 않으면 올바르지 않은 괄호로 판단하면 해결될 것으로 보인다구현과정 들어온 문자열을 문자형태로 변환하고 스택을 선언boolean answer = true;char[] arrs = s.toCharArray();Stack stack = new Stack();문자를 하나씩 확인하면서 '('가 나오기전에 ')'가 나오면 false를 반환문자를 전부 확인한 후에 스택의 상태를 ..
1. 문제내용요약 두개의 배열, 개발진도와 개발속도가 담긴 데이터가 있다.개발속도에 따라 개발진도가 상승할 때 가장 앞에서부터 100이 달성됐을 때순차적으로 100이 달성된 진도가 있으면 그 갯수만큼 저장하라2. 접근방법순차적으로 값이 들어가야 하기 때문에 큐를 쓸생각을 해보았다.두 배열을 반복을 통해 값을 변환하고 앞에서부터 100이 달성 됐을 때 순차적으로 100이 달성한 값이 있는지 확인하고100이하의 값이 나올 때까지 count를 증가해 큐에 count를 넣는 방법을 사용해봤다3.구현과정결과를 저장할 큐, 순차적 탐색을 위한 length, 100이상의 값이 나올 때 사용할 countQueue queue = new LinkedList();int length = 0;int count = 0;lengt..
1. 문제 내용요약 : 배열의 데이터가 연속적으로 나온다면 그 데이터를 하나로 줄이자2. 내가 생각한 문제 접근방법Stack의 최상위의 데이터와 비교하며 계속 push하면 간단하게 풀릴 것 같은 문제로 생각된다[1,1,3,3]을 예를 들면 스택이 비어있으니 1push겹치니 pass최상위 와 다르니 3push겹치니 pass 이 과정을 거치면 될 것 같다3. 실제 구현 과정일단 스택 변수를 선언하고Stack stack = new Stack();들어온 값을 비교하여 stack에 push하고 stack을 반환for (Integer value : arr) { if (stack.isEmpty()) stack.push(value); else if (!stack.peek().equals(value)) stack.pus..
문제 내용이 문제를 풀기 위한 방법으로 재생횟수를 기준으로 정렬한 노래의 정보를 데이터로 만들고총합재생수를 정렬한 데이터를 만든 뒤, 총합재생수가 가장 높은 장르에서 먼저 정렬한 데이터의 위에서 2개만 가져오는 과정을 생각했다.일단 노래의 번호와 재생 수를 저장할 클래스를 하나 만들었다.class SongInfo { int index; int play; public SongInfo(int index, int play) { this.index = index; this.play = play; }} 그리고 장르를 키값으로 SongInfo를 리스트화해서 저장하는 songs장르를 키값으로 총합 재생수를 저장하는 totalOfSong을 선언하고아래 코드와 같이 데이터를..
문제내용간단한 수학 공식으로 생각하여 접근해봤다옷 태그의 개수를 전부 곱하면 경우의 수가 전부 나올 수 있다라고 생각하고 풀어보았다우선 배열을 해시에 저장을 하고for(String[] strs : clothes){ String tag = strs[1]; hash.put(tag, hash.getOrDefault(tag, 0) + 1);}해당 태그를 키값 태그의 개수를 값으로 저장해주었다그리고 모든 태그의 값을 곱해주었더니for(Integer value : hash.values()){ answer *= value;}결과가 다르게 나왔다..그래서 고민을 조금해봤는데생각해보니 안입었을 경우를 고려하지 않았다for(Integer value : hash.values()){ answer *= (value + 1);}..
문제내용처음 문제를 풀었을 때 정렬을 하면 쉽지않나?라는 생각으로 문제를 풀어봤다import java.util.Arrays;class Solution { public boolean solution(String[] phone_book) { // 정렬 Arrays.sort(phone_book); // 순차적으로 시작이 같은 부분을 찾기 for (int i = 0; i 위의 코드로도 해결이 되지만 해시로도 해결해보고 싶었다해시로 구현한다면 이렇게 구현할 수가 있다import java.util.HashSet;import java.util.Set;class Solution { public boolean solution(String[] phone_book) { ..
문제내용HashSet을 통해 모든 번호를 저장하되 중복은 없도록 하는 방법으로 구현해봤다HashSet hash = new HashSet();for(Integer num : nums){ hash.add(num);}문제에서는 기본적으로 전체데이터의 절반만큼을 가져갈 수 있도록 하였는데가장 다양한 종류를 가져갈 수 있는 마리수를 반환하라 하였으니아래 코드로 최대치는 절반이지만 현재 데이터의 개수(HashSet의 데이터 개수)가 그보다 작으면 바꾸도록 구현했다int max = nums.length/2;if(hash.size() 전체코드import java.util.HashSet;class Solution { public int solution(int[] nums) { int answer = 0..
문제 내용수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.해시 문제이기 때문에 키와 값을 이용한 문제풀이를 해보았다.두 자료 participant와 completion을 이용해 값을 찾는 과정을 해보자우선 아래 코드를 통해 participant의 데이터를 HashMap으로 만들었다HashMap hash = new HashMap();for(String str : participant){ hash.put(str, hash.get..