Languages/Java

다음과 같이 풀었다.nums를 돌며 map에 종류 번호와 해당 번호가 나온 횟수를 저장한다.1) 종류 번호가 nums 배열 크기 / 2 보다 크다면 -> nums 배열 크기 / 2만큼만 선택할 수 있다.2) 작거나 같다면 -> 종류 번호 만큼 선택한다. import java.util.*;import java.io.*;class Solution { public int solution(int[] nums) { int answer = 0; HashMap pokemon = new HashMap(); for (int num : nums) { pokemon.put(num, pokemon.getOrDefault(num, 0) + 1); } ..
https://school.programmers.co.kr/learn/courses/30/lessons/42576?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음에는 HashMap으로 풀었다.정확성 테스트는 모두 통과했지만, 효율성 테스트는 전체 5개 중 하나밖에 통과하지 못했다.HashMap 사용 (효율성 테스트 통과 X)import java.util.*;import java.io.*;class Solution { public String solution(String[] participant, String[] completion) { String ans..
알고리즘 분류- 구현- 자료 구조- 문자열- 파싱- 덱 새로운 언어 AC에는 두 가지 함수 R(뒤집기)와 D(버리기)가 있다.R: 배열에 있는 수를 뒤집는다.D: 첫 번째 수를 버린다. 배열이 비어있는데 D를 사용한 경우 에러가 발생한다. 각 테스트 케이스에 대해서 입력으로 주어진 정수 배열에함수를 수행한 결과를 출력한다.에러가 발생한 경우에는 error를 출력한다. 생각했던 방법은 다음과 같았다.- 입력된 배열을 앞뒤 '[', ']'를 빼고 stringbuilder에 저장한다.- 함수 p를 하나씩 돌면서 R이면 stringbuilder.reverse()를 하고,D이면 ','를 기준으로 split하고 제일 앞에 있는 숫자를 ,와 함께 삭제한다.이때 stringbuilder의 length가 0이라면 err..
알고리즘 분류- 구현- 자료 구조- 큐 https://www.acmicpc.net/problem/1158 N과 K가 주어진다.원형 테이블에 1번부터 N번까지 N명의 사람이 앉고,순서대로 K번째 사람을 제거한다.이때 원에서 사람들이 제거되는 순서인 (N, K)-요세푸스 순열을 구하는 문제다. 생각했던 방법은 list에 순서대로 1부터 N까지를 저장해두고,list의 사이즈가 1보다 클 때까지 아래 과정을 반복하는 것이다.- cur 변수에 현재 제거할 index를 저장해둔다.- cur index에 해당하는 수를 sb에 저장하면서 list에서 삭제한다.- cur는 K씩 커지게 하고, cur이 list의 사이즈보다 커지면 list 사이즈 만큼 줄인다. 그러나 이렇게 cur를 증가시키면,2바퀴 이상 돌게 되면 범위..
알고리즘 분류- 구현- 자료 구조- 시뮬레이션- 큐https://www.acmicpc.net/problem/1966 내가 찾고자 하는 문서가 몇 번째로 인쇄되는지 출력하는 문제다.프린터기는 다음과 같이 동작한다.1. 현재 Queue의 가장 앞에 있는 문서의 '중요도'를 확인한다.2. 나머지 문서들을 돌며 현재 문서보다 중요도가 높으면, 현재 문서를 Queue의 가장 뒤로 이동시킨다.3. 현재 문서가 가장 중요도가 높은 문서라면 인쇄한다.4. 인쇄하는 문서가 내가 찾고자 하는 문서라면 중단하고 몇 번째 인쇄인지 출력한다. 처음에 생각한 방법은내림차순 정렬을 해서 찾는 거였는데, Queue의 특성을 사용하기도 어렵고,예외사항이 너무 많아서 생각하다가 중단했다.. 찾아보니 Queue를 LinkedList로 구..
예제 첫 째 줄에 n이 주어지면둘째 줄부터 주어진 1 이상 n 이하의 숫자가 주어진다.스택을 이용해 입력된 수열을 만들려면 어떤 연산을 해야 하는지push는 +로, pop은 -로 표현하도록 한다. import java.io.*;import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] arr = new int[n]; Stack st..
알고리즘 분류- 자료 구조- 문자열- 스택 예전에 풀어봤던 문제라바로 스택이 떠올랐다..괄호 문자열이 들어갈 때 스택에 차곡차곡 넣고 () 요렇게 겹치는 순간이 오면pop 해주면 된다 전체 문자열을 돌고난 후 스택에 값이 없으면 VPS라서 "YES" 출력,값이 하나라도 있으면 "NO" 출력이다. Stack 사용import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = I..
알고리즘 분류- 자료 구조- 정렬- 이분 탐색- 해시를 사용한 집합과 맵 일단 내가 푼 방법은 HashMap이다.N개 주어진 숫자 카드 각각 몇 개 있는지를 알아야 하기 때문이다. HashMap 사용import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); StringTokenizer st = new..