본문 바로가기

java17

[ 프로그래머스 / Java] 프린터 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 문제 풀이 이 문제는 분류부터 큐로 되어있고, 프린터 관련 문제들은 대부분 대표적인 큐 문제죠. 저희는 각 문서들의 중요도를 배열로 입력받아 원하는 문서가 몇 번째로 출력되는지를 구해야 하는데요. 저는 다음과 같은 순서로 풀었습니다. 1. 각 문서의 중요도와, 이 문서가 원하는 문서인지를 가지는 변수를 가진 static class를 만들어 큐에 순서대로 .. 2021. 7. 27.
[ 프로그래머스] 가장 큰 수 - Java 문제 링크 programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 문제 풀이 정렬하는 문제였습니다. 처음에는 두수를 앞자리부터 한자리씩 비교해서 정렬하였으나 이 방법으로는 통과하지 못하는 케이스가 있었습니다. 예)[212 , 21] 정답: 21221 다시 생각 해 본결과, 아예 두 수를 이어 붙여서 비교하면 둘 중에 어느 수가 먼저 이어붙였을 때 큰 수인지 알 수 있.. 2021. 3. 10.
[ 백준 20056] 마법사 상어와 파이어볼 - Java 반례 문제 링크 https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 문제 풀이 풀다보면 딱 삼성 코딩테스트 문제같다고 느끼는 시뮬레이션 문제이다. 배열을 생성해서 풀 필요없이 자료구조를 이용해서 풀었다. 테스트 케이스까지 금방 맞았지만 제출했을때 자꾸 틀려서 한참 고민했던 문제... 나처럼 파이어볼이 이동할때를 나머지로 처리해서 풀었을 때 반례를 생각해 보면, 속도가 굉장히 높을때를 생각해서 구현하는 것도.. 중요.. 2021. 3. 3.
[ 백준 19236] 청소년 상어 - Java 문제 링크 http://boj.kr/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 문제 풀이 삼성 코딩테스트 기출문제입니다. 그 전에 나왔던 아기상어(http://boj.kr/16236)의 시리즈로 내놨나 봐요 ㅎㅎ 아기상어는 BFS로 푸는 문제였는데 요 청소년 상어는 문제에서 주어지는대로 이동시키는 시뮬레이션 문제로 보입니다! 어렵지는 않았지만 문제를 읽다보니 물고기가 없는 칸으로는 이동할 수 없다. 이부분이 있는데 이 부분을 잘 못 이해해서 물고기 없는칸 이후 방향으로는 탐색하.. 2021. 2. 25.
[ 백준 1629 ] 곱셈 - Java 문제 링크 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 문제 풀이 해당 문제는 A의 B제곱을 구해서 C로 나눈 나머지를 구하는 문제입니다. 얼핏 보면 간단해 보이는 문제이지만 범위가 굉장히 크죠 A, B, C 모두 2,147,483,647 이하의 자연수입니다. 그래서 만약 A의 2,147,483,647 제곱을 구하려면 많은 연산이 필요하고, 시간 복잡도가 올라가게 됩니다. 그럼 이 문제를 어떻게 풀어야 할까요?? 분할 정복과 DP로 풀면 되는데, 다음에 나오는 예를 같이 보며 이해해보겠습니다. 예를 들어 .. 2020. 12. 18.
[ 백준 1149 ] RGB 거리 - Java 문제 링크 http://boj.kr/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 문제 풀이 n까지의 집이 있고, 1 2020. 12. 16.