생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q1700.java 멀티탭의 꼿을 수 있는 개수와 사용되어야할 기기가 순서대로 주어진다. 멀티탭에서 제품을 뽑는것을 최소화 할 때, 몇 번 뽑아야하는지 출력하여라. 처음 생각콘센트의 꼽을 수 있는 수도 100개 꼽는 기기의 수도 최대 100개이다. 수가 작으므로 다 살펴보면서 진행을 하였다.▶ 현재 꼿혀있는데 똑같은게 들어올 경우는 바로 다음 기기를 봐도 상관없으므로 HashSet을 이용해서 꼿힌 기기들을 관리해 주었다. 다음 생각꼿혀있지 않을경우 2가지로 나눠진다. 1) 콘센트에 자리가 없을경우 2) 콘센트에 자리가 있을경우 로 나눠진다.▶ 1)의 경우는 HashSet에..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q11000.kt 최소한의 강의실로 모든 강의를 들을 수 있도록 하여라. 강의실의 수업이 끝나자마자 바로 다음 강의를 시작할 수 있다. 처음 생각이전에 풀어본 [백준] 1931번 회의실배정 보다 살짝 어려워졌다. 접근은 비슷한 방식으로 진행하지만 처리를 해주어야하는 부분에 있어서 고민을 조금 하였다.▶ 회의실 배정처럼 한 개의 방이아닌 다양한 방을 처리해 주어야하므로 일찍 끝나는 회의실을 우선적으로 처리를 해주었고, 끝나는 시간이 같을 경우에는 시작 시간이 빠른 순서대로 처리를 해주었다. 다음 생각하나의 방이 사용중이면 새로운 방을 늘려주어야한다. List를 가지고 구현..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q1931.kt 회의실을 최대한 많이 사용할 수 있는 경우의 수를 출력하여라. 회의실의 끝나는 시간에 바로 다음 강의를 시작할 수 있다. 처음 생각최대한 많이 회의를 많이 할 수 있는 경우를 따져봐야한다. 최대한 따져보라는 말을 토대로 그리디적인 접근을 해볼 필요가 있다.▶ 회의를 많이 해야하므로, 끝나는 시간이 빠른 회의먼저 회의를 하면된다. 다음 생각회의를 끝나는 순서대로 정렬해준 후, 빠른 순서대로 회의장을 사용하도록 하였더니 틀렸습니다가 나왔다. 같은 시간에 끝난 경우를 염두해 두지 않았기 때문이다.▶ 회의가 같은 시간에 끝날 경우는 시작시간에 빠른 순서대로 넣어준..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q11047.kt 동전 금액과 목표 금액이 주어진다. 최소한의 동전으로 해당 목표 금액을 만들 수 있을 때, 최소한의 동전 수를 출력하여라. 처음 생각동전을 최소한으로 사용해야 하므로 큰 동전부터 우선적으로 사용을 해나가면 된다.▶ 해당 금액으로 몫과 나머지를 따져도 되지만 큰 동전부터 뺄수있는 만큼 빼나가면서 진행을 하였다. 다음 생각동전수가 세세하게 주어졌기 때문에 그리디 적인 풀이로도 풀이가 가능하다. 만약 동전이 띄엄띄엄 주어졌으면 DFS나 BFS를 통해 풀이를 해야할 것이다. 방안1) Java 풀이(몫과 나머지 이용) 123456789101112131415161..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q1449.kt 길이가 L인 테이프를 최소로 사용하여 파이프 수리를 하고자 한다. 최소로 사용한 개수를 출력하여라. 처음 생각파이프의 양쪽을 0.5 만큼 덮어야한다. 파이프의 고장난 곳은 무조건 정수이므로 0.5는 수리를 하는데 아무런 영향을 끼치지 못한다.▶ 따라서 양쪽의 0.5를 못쓴다 생각하고 처음 입력받은 테이프의 길이 L에서 -1을 뺀 값을 테이프로 사용하였다. 다음 생각고장난 부분만 살펴봐도 상관이 없지만 길이가 최대 1000밖에 안하므로 길이가 1000인 배열을 만들어 고장난 곳을 1로 표시하였다. 다다음 생각배열을 처음부터 살펴보면서 값이 1인 즉, 고장난 ..
생각월과 일이 숫자로 주어진다. 2007년의 해당 월과 일이 무슨 요일인지 출력하시오. (월요일이면 MON 일요일이면 SUN 같이 출력) 처음 생각Java에서는 Calendar Class를 사용하면 쉽게 날짜에 대한 구하고 싶은 것들을 구할 수 있다.▶ set을 통해 원하는 날짜를 입력해준후 해당 날의 요일을 구할 수 있다.▶ 한가지 주의점이라면 Calendar class의 메소드를 보면 Month는 0부터 시작하는걸 알 수 있다. 따라서 입력받은 월의 -1을 해주어야한다. 다음 생각get 메소드와 Calendar.DAY_OF_WEEK 를 통해 1~7의 return 값을 얻을 수 있다. 1은 일요일 7을 토요일을 의미한다. String 배열로 1~7에 해당하는 요일값의 출력을 미리 저장해 놓아도되지만 이..
생각|\_/| |q p| /} ( 0 )"""\ |"^"` | ||_/=\\__| 를 그대로 출력한다. 처음 생각Java를 사용하면 \을 처리해주기위해서 \와 "를 출력해주기 위해서 귀찮은 반복작업을 해야한다. 하지만 Kotlin을 사용하면 이야기가 달라진다. 다음 생각Kotlin에서는 String 값을 넣을 때 """ 내용 """ 을 사용해주면 내용의 문자열 그대로 저장 및 출력을 지원한다. 따라서 개의 모양을 복사해서 내용에 넣어주면 그대로 출력이 가능한다. 방안1) Kotlin의 그대로 문자열을 출력할 수 있는 """ """ 의 사용 1234567891011import java.util.*fun main(args:Array){ var sc : Scanner = Scanner(System.`in`) ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q2741.kt N 을 입력받는다. 1부터 N까지 출력한다. 처음 생각Kotlin의 반복문은 Python과 비슷하다. 일반적인 Java의 문법과는 다르게 in을 사용하여 범위를 정해주고 step을 사용하여 변수 증가를 시켜준다.▶ 또 Scanner를 입력받을 때, System.in에서 이미 이 'in'이 Kotlin에서는 미리 정의되어있는 단어이므로 'in'으로 구분을 지어주어야 사용이 가능하다. 방안1) Java 12345678910import java.util.Scanner; public class Solution { public static void main(Stri..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q13908.java 비밀 번호를 알아내려고 한다. 3자리면 000~999 2자리면 00~99 까지 가능하다. n자리의 비밀 번호중 m개의 숫자가 무조건 사용되어야한다. 예를들어 m이 2로 주어지고 3 4 가 주어지면 n이 2라면 34 43 밖에 비밀번호가 될 수 없다. n과 m이 주어질 때, 비밀번호가 될 수 있는게 몇개인지 출력하여라. 처음 생각n이 최대 7로 모든 경우를 보더라도 0000000~9999999로 천 만개만 봐주면된다. 따라서 완전 탐색을 통해 결과를 얻을 수 있다. 다음 생각천 만개에 대해서 매번 생성된 비밀번호마다 반복문을 이용해서 해당 숫자가 있나..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q16236.java 아기 상어가 혼자서 먹이를 혼자 먹으러 돌아다닐 때, 최소로 이동한 거리를 구하여라. 아기 상어는 자신보다 큰 물고기는 지나가지 못한다. 먹이가 여러개일때는 최소 거리, 같은 거리에 먹이가 있을 때는 위쪽, 위쪽에 여러 먹이가 있을 경우는 왼쪽을 우선시 한다. 처음 생각먹이를 찾아 그 먹이를 잡아 먹어야한다. Queue를 사용해서 BFS 탐색을 통해 현 아기 상어 위치에서 먹이를 찾아주어야겠다고 생각하였다. 다음 생각4방향 탐색을 통해 먹이를 찾는 탐색을 한다. 여러 먹이가 발견되면 해당 탐색 회차에서의 모든 먹이를 비교해서 조건에 만족하는 먹이를 ..
- Total
- Today
- Yesterday