문제 - 프린터 기기는 인쇄하고자 하는 문서를 인쇄 명령을 받은 순서대로, 즉 먼저 요청된 것을 먼저 인쇄(FIFO, First In First Out) - 상근이는 새로운 프린터기 내부 소프트웨어를 개발. 조건은 아래와 같음 1. 현재 Queue의 가장 앞에 있는 문서의 중요도 확인 2. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤로 3. 그렇지 않다면 바로 인쇄 - 현재 Queue에 있는 문서의 수와 중요도가 주어졌을 때, 어떤 한 문서가 몇 번째로 인쇄되는지 알아내는 것이 목표 해결방법 입력 받은 문서의 중요도와 인쇄 순서를 LinkedList에 저장하여 각 문서를 관리하도록 하였다. 처음 입력을 받으면서 M 번째에 있는 문서..
문제 - 주어진 숫자 M이상 N이하의 소수를 모두 출력 - 1
문제 - N개의 정수 A[1], A[2], ..., A[N]이 주어짐 - 이 안에 X라는 정수가 존재하는지 알아내는 것 - 모든 정수의 범위는 -2^31보다 크거나 같고 2^31보다 작음 고찰 처음에는 배열에 입력받은 것(input 배열)을 돌면서 입력받은 숫자가 있는지 돌아보도록 코드를 작성하였다. 더보기 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int inputNum = Integer.parseInt(br...
문제 - 스택은 자료를 넣는(push) 입구와 자료를 뽑는(pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 LIFO(Last int First out) 특성을 가짐 - 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있음 - 스택에 push하는 순서는 반드시 오름차순을 지킴 - 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지 판단 - 만들 수 있다면 어떤 순서로 push와 pop 연산을 수행하는지 계산(push : + / pop : -) 해결방법 java의 stack 클래스를 사용하여 문제를 해결하였다. 스택에 push할 때, 이전에 push 되었던 수를 또 넣을 순 없기 때문에 이전에 넣었던 최대값을 저장해두고 그 값 이상의..
문제 - 길이가 제각각인 K개의 랜선으로 같은 길이의 N개의 랜선을 만들어야 함 - 이미 자른 랜선은 붙일 수 없고 버려야 함 - 랜선을 자르거나 만들 때 손실되는 길이는 없음 - 기존 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없음 - 항상 정수 길이만큼 자름 - N개보다 많이 만드는 것도 N개를 만드는 것에 포함 - K는 1 이상 10,000 이하의 정수 - N은 1 이상 1,000,000 이하의 정수 - 항상 K
문제 - 종말의 숫자란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는 수 (666, 1666, 2666, ...) - 영화감독 숌은 첫 번째 영화의 제목은 세상의 종말 666, 두 번째 영화의 제목은 세상의 종말 1666 이렇게 이름을 지으려고 함 - N번째 영화의 제목은 세상의 종말 (N번째로 작은 종말의 숫자)와 같음 - 숌이 만든 N번째 영화의 제목에 들어간 숫자를 출력하는 프로그램 작성 해결방법 첫 번째 종말의 숫자인 666부터 1씩 증가하는 숫자를 문자열로 바꾸어주고 해당 문자열 내에 "666"이 포함되어 있는지를 검사하는 방식으로 코드를 작성하였다. "666"이 포함되어 있으면 시리즈가 하나씩 늘어나는 것이므로 count 변수를 두어 하나씩 증가할 수 있도록 하였고, 해당 count가 입..
문제 - 뒤에서부터 읽어도 똑같은 단어를 팰린드롬이라고 함 - 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬수 - 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬수로 취급할 수도 있지만, 이 문제에서는 무의미한 0이 앞에 올 수 없음 - 121, 12421 등이 팰린드롬수 해결방법 입력받은 숫자를 문자열로 취급하여, 맨 뒤부터 접근하여 거꾸로 뒤집은 숫자를 입력받은 숫자와 비교할 수 있도록 하였다. 이 과정에서 두 숫자가 같으면 팰린드롬수로 판단하여 yes를, 다르다면 팰린드롬수가 아니기 때문에 no를 출력할 수 있도록 하였다. 코드 import java.io.*; import java.util.*; class Main{ public static void main(String[] ar..
문제 - 첫째 줄에 단어 개수 N을 입력받음 - N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어들을 N개 입력받음 - 아래의 조건에 따라 정렬 1. 길이가 짧은 것부터 2. 길이가 같으면 사전 순으로 고찰 Comparator를 이용하여 정렬하고 싶었지만, 오랜만에 코드를 짜는 것이였기 때문에 잘 기억이 안나 Comparable과 Comparator에 대해 다시 공부를 하고 코드를 작성하였다.. 2022.07.05 - [JAVA] - [JAVA] Comparable / Comparator [JAVA] Comparable / Comparator 객체들을 정렬하기 위해서는 정렬 기준이 필요하다. 단순한 숫자, 문자와 같은 기본형(primitive) 데이터는 Arrays.sort() 메서드를 이용하여 알아서 정..