목록전체 (156)
Dazzling 개발 노트
[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..
[백준] 2579 - 계단 오르기 (Java) 문제 https://www.acmicpc.net/problem/2579 풀이/후기 점화식을 얻어내려고 정말 열심히 찾았는데,, 결국 못찾았다ㅠㅠㅠ 검색해서 점화식 확인해보니 조금만 더 생각했으면 도출할 수 있을 것 같기도 하고,, 살짝 아쉽다 코드 package DynamicProgramming; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Problem2579 { public static void main(String[] args) throws IOException { BufferedReader br = new B..
[백준] 2407 - 조합 (Java) 문제 https://www.acmicpc.net/problem/2407 풀이/후기 BigInteger 연산 주의!! 확률과 통계 이슈로 순열과 조합부터 복습이 필요했다..^^; 여기서 nPr은 반복문을 돌며 N-i을 곱하는 것으로 표현하고 r!은 i+1을 곱하는 것으로 표현 반복문을 마치면 그 결과를 나눠주면 됨 (다이나믹프로그래밍으로 풀기) 파스칼의 삼각형을 이용하여 풀이할 수 있다. 이차원 배열을 이용하여 파스칼 삼각형을 표현한다. 코드 package DynamicProgramming; import java.io.*; import java.util.*; import java.math.BigInteger; public class Problem2407 { stati..