(옵시디언 기록일 : 23년 12월 30일) 문제 https://www.acmicpc.net/problem/17404 17404번: RGB거리 2 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 풀이 1번집과 N번집의 색깔이 같이 않게 하려면 - 1번집 R 일 경우 1번집 G, B를 DP값을 무한대로 - 1번집 G 일 경우 1번집 R, B를 DP값을 무한대로 - 1번집 B 일 경우 1번집 R, G를 DP값을 무한대로 설정하고 반복문을 3번 돌린다. 여기서 첫번째 집에서 선택한 색깔 이외에 다른 색깔을 첫집에서 ..
Problem Solving
문제 https://www.acmicpc.net/problem/1103 1103번: 게임 줄에 보드의 세로 크기 N과 가로 크기 M이 주어진다. 이 값은 모두 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 보드의 상태가 주어진다. 쓰여 있는 숫자는 1부터 9까지의 자연수 또는 www.acmicpc.net 풀이 사이클을 체크하기 위한 visited 배열, 이동 카운트 횟수를 저장하기 위한 dp배열 을 이용하여 탐색할 때 이동 카운트 횟수가 저장된 배열과 비교하여 이동할 곳의 카운트 위치가 현재 탐색하고 있는 경로의 카운트보다 많다면 해당 지점을 탐색할 필요가 없음. 이를 이용하여 시간초과를 회피 할 수 있음 세부설명은 주석 참고 import java.util.*; import java.io.*..
문제 https://www.acmicpc.net/problem/2457 2457번: 공주님의 정원 첫째 줄에는 꽃들의 총 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 각 꽃이 피는 날짜와 지는 날짜가 주어진다. 하나의 날짜는 월과 일을 나타내는 두 숫자로 표현된다. 예를 들어서, www.acmicpc.net 풀이 주석참고 import java.io.*; import java.util.*; public class BOJ_2457_G3_공주님의정원 { static int n; static final int LAST_DAY = 1201; static List list; public static void main(String[] args) throws Exception { // st..
(obsidian 기록일 : 24년 1월 1일) 문제 https://www.acmicpc.net/problem/2616 2616번: 소형기관차 첫째 줄에 기관차가 끌고 가던 객차의 수가 입력된다. 그 수는 50,000 이하이다. 둘째 줄에는 기관차가 끌고 가던 객차에 타고 있는 손님의 수가 1번 객차부터 차례로 입력된다. 한 객차에 타고 있 www.acmicpc.net 풀이 변수선언 int[i] trainGuest : 기차탄 손님 int[i] guestSum : 기차탄 손님 누적합 int[i][j] dp : 소형기관차 i개로 j칸을 끌고갈 때 최대로 운송할 수 있는 손님의 수 M : 한개의 소형 기관차가 끌 수 있는 최대 객차의 수 예시 입력값 N = 7, M = 2 손님수 35 40 50 10 30 4..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제는 단순한데 자바 문자열에 익숙하지 않아 꽤 헤멘 문제이다. 처음에는 정규식을 이용해서 해당 문자가 영문인지 판단하였는데 나중에 찾아보니 Character.isLetter() 로 간단하게 판별할 수 있는 것을 알게되었다. import java.util.*; import java.io.*; class Solution { public int solution(String str1, Str..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 구현은 어렵지 않다. 백준의 배열돌리기 문제를 풀 수 있다면 해당 문제도 쉽게 풀 수 있다. 단순 구현하면 다음과 같다. import java.util.*; class Solution { static int[][] arr; public int[] solution(int rows, int columns, int[][] queries) { int[] answer = new int[queri..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 해당 문제를 처음 보았을 때 이해하기 어려웠는데 아래 두 입력케이스를 보면 이해할 수 있다. {{2},{2,1},{2,1,3},{2,1,3,4}} --> [2, 1, 3, 4] {{1,2,3},{2,1},{1,2,4,3},{2}} --> [2, 1, 3, 4] 두 케이스를 보면 결과가 같은데 2번째 케이스를 1번째 케이스처럼 원소의 개수대로 튜플을 크기순으로 정렬하고 보면 {{2},{2..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 자바에서는 substring 메서드를 이용해서 문자열을 자를 수 있다. 문자열을 1부터 n/2크기까지 자르고 첫번째로 자른 문자열 이후부터 첫번째 문자열과 비교하면서 일치하면 압축하면된다. 코드는 다음과 같이 작성하였다. import java.util.*; class Solution { public int solution(String s) { int answer = s.length();..
문제 문제링크 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 규영이의 카드와 순서가 정해지고 인영이가 내는 순서에 따라 승패가 갈린다. 즉, 순열을 통해 인영이의 카드 순서의 경우의 수를 모두 구하고 승패 여부를 확인하면 된다. 순열을 구하는 방법은 대표적으로 두가지가 있는데 swap을 이용하여 순서를 구하거나 boolean 배열을 이용해 check하는 방법이다. 풀이1 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; publi..
문제 문제링크 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 구현 문제이다. 두 유저가 이동할 때 사용할 수 있는 충전기 범위에 있다면 충전할 수 있는데 시간이 전부 흐르고 나서 두 유저가 최대로 충전할 수 있는 충전량을 구하는 문제다. 분기점은 다음과 같다. 두 유저가 충전 범위에 있을 때 두 유저가 사용할 수 있는 파워가 가장 큰 충전기가 같을 때 두 유저가 사용할 수 있는 충전기가 둘다 1개일 때 -> 한 유저가 충전기 사용을 포기하고 다른 유저가 사용 한 유저가(혹은 두 유저가) 사용할 수 있는 충전기가 2개일 때 -> 두개를 가지고 있는 유저가 파워가 큰 첫번째 충전기 사용을 양보하고 충전기를 ..