목록Algorithm (87)
Dazzling 개발 노트
[백준] 12101 - 1,2,3 더하기 2 (Java) 문제 https://www.acmicpc.net/problem/12101 풀이/후기 1,2,3 더하기 문제 중 9095번 문제를 복습하고 풀어보았다. 그치만 9095번에서 패턴을 찾아낸 것으로만은 풀지 못했다. ArrayList를 이용해 문자열 배열을 활용해서 푸는 방법이 포인트였던 것 같다. 수식을 출력해내는 부분도 좀 헷갈렸는데 아래 그림을 보니 그냥 똑같이 생각해주면 된다는 것을 깨달았다. 역시 직접 눈으로 봐야 이해가 가는 편,,^^; 코드 package DynamicProgramming; import java.io.*; import java.util.*; public class Problem12101 { public static void ..
[백준] 11660 - 구간 합 구하기 5(Java) 문제 https://www.acmicpc.net/problem/11660 풀이/후기 예전에 softeer에서였나? 구간합 구하는 문제 풀었을 때와 유사한 문제였던 것 같다. 배열을 입력받을 때부터 누적합을 저장해 두고 원하는 위치의 마지막 점 + (시작점-1) 을 행별로 더해주면 된다. 말보다 소스코드로 이해하는 것이 더 쉽다. 오랜만에 바로 문제를 풀어내니 다시 자신감이 생긴다@ 코드 package DynamicProgramming; import java.io.*; import java.util.*; public class Problem11660 { public static void main(String[] args) throws IOExceptio..
[Softeer] 408 - 8단 변속기 (Java) 문제 https://softeer.ai/practice/info.do?idx=1&eid=408 풀이/후기 단순한 문제였다. 숫자가 연속적인지 아닌지 판단하여 출력하면 된다. 코드 package Softeer; import java.util.*; import java.io.*; public class lv2_408 { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] input = br.readLine().split(" "); int[] inp = n..
[Softeer] 413 - 지도 자동 구축 (Java) 문제 https://softeer.ai/practice/info.do?idx=1&eid=413 풀이/후기 점의 개수가 사각형의 개수 + 1의 제곱개인 점을 활용하여 풀이 사각형의 개수는 2의 제곱으로 증가함 제곱 연산자 Math.pow()기억하기 Double - String 등 다양한 형변형 기억하기 코드 package Softeer; import java.io.*; public class lv2_413 { //지도 자동 구축 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Syst..
[Softeer] 장애물 인식 프로그램 (Java) 문제 https://softeer.ai/practice/info.do?idx=1&eid=409&sw_prbl_sbms_sn=232380 풀이/후기 하... BFS 문제인거 바로 파악해서 자신있게 풀기 시작했는데 정말 한참 부족하다는 것을 느꼈다... 일단 visited를 구현할 때 int로 할지, boolean으로 할지 감을 못잡겠다. BFS문제에서 어떤 값을 원하냐에 따라 달라지는 것 같은데 이전에 visited외에 별도로 카운트 세다가 고생한 이후로 visited에 +1을 해서 카운트하는 방식을 선호하게 되었는데, 이번엔 또 boolean으로 풀고 별도로 카운트를 하는 방식으로 완성했다. 아무래도 이코드 저코드 참고하고 그 디테일까지 파악하지 못하니..
[백준] 2559 - 수열 (Java) 문제 https://www.acmicpc.net/problem/2559 풀이/후기 토요일에 예정된 코딩테스트에서 자주 나오는 유형이라길래 풀어보았다. 단순해보이지만 일반적인 반복문으로 풀이하면 런타임에러가 발생한다. 이 문제는 누적합과 두포인터 방법을 사용하여 풀 수 있는데, 나는 누적합을 이용해서 풀었다. **배열에 담을 때 누적합으로 담기 **배열 인덱스 + 1 해주기 코드 package PrefixSum; import java.io.*; import java.util.*; public class Problem2559 { public static void main(String[] args) throws IOException { BufferedReader br =..
[백준] 1912 - 연속합 (Java) 문제 https://www.acmicpc.net/problem/1912 풀이/후기 DP 문제를 계속해서 풀면서 정말 오랜만에 자력으로 점화식을 도출해냈다. 아주 자신감있게 풀어서 주어진 예제가 모두 맞게 나오는 것을 확인하고 제출하니 오답이 나왔다. dp[i] = Math.max(dp[i-1], arr[i-1]) + arr[i]; 이 점화식에선 무조건 두 개 이상의 숫자를 선택한 경우이다. 연속된 몇 개의 수를 선택하는 경우 외에 하나의 수만 선택할 수도 있으므로 arr[i]는 꼭 더해져야 하는 부분이 아니다. dp[i] = Math.max(dp[i-1] + arr[i], arr[i]); 이렇게 수정하니 정답처리가 되었다. 정말 오랜만에 자신있게 풀었는데,, 마무..
[백준] 11053 - 가장 긴 증가하는 부분 수열 (Java) 문제 https://www.acmicpc.net/problem/11053 풀이/후기 처음에는 문제를 잘못읽고 풀어서 오답이 나왔다. 그리고 dp에 수열 중 선택한 값을 저장하는 방식으로 풀었는데 생각해보니까 수열의 크기를 구해야하기 때문에 dp에 부분 수열의 번호를 넣어서 풀어야 했다. 마지막에 dp[N-1]을 출력하면 당연히 답이 나와야한다고 생각했는데 N-1번째 숫자가 부분 수열의 멤버가 아닐 수 있기 때문에 그렇게 하면 안된다. 반복문을 한 번 더 돌려서 dp의 가장 큰 값을 뽑아서 출력한다. 코드 package DynamicProgramming; import java.io.*; import java.util.*; public clas..