백준 알고리즘 파이썬(Python) 14501번 퇴사
2021. 8. 30. 14:09
Algorithm
뒤에서부터 채워나가는 DP(다이내믹 프로그래밍) 문제이다. 우선 백준이는 N+1번째 날에는 퇴사를 하기 때문에 ' intex + T(i) ' 값이 N(여기서는 7)을 넘어갈 수 없다. 예를 들어 7일째를 보면 index가 6이고 T(i) 값은 2이므로 6+2의 값이 7을 넘어가게 된다. 마찬 가지로 6일째도 index가 5이고 T(i)값은 4이므로 5+4의 값은 7을 넘어가게 된다. 이럴 경우에는 아까 말했다 싶이 뒤에서부터 채워나가는 DP이므로 i+1번째 있는 DP값을 그대로 내려받는다. 따라서 dp[6]과 dp [5]는 차례로 0이 된다. 이제 5일째 즉 index가 4인 경우의 날을 보면 index가 4이고 T(i) 값은 2이므로 4+2는 7을 넘어가지 않는다. 이때부터는 그 위의 dp값 즉 여기서..
배열 정렬하기(오름차순, 내림차순) Arrays.sort( )
2021. 8. 30. 11:53
JAVA
자바의 여러 API 중 정렬에 관련된 메소드가 있다. java.util.Arrays 클래스의 sort() 메서드를 사용하시면 따로 정렬 로직을 짜지 않아도 한번의 메소드 호출로 간편하게 배열이나 리스트를 정렬할 수 있다. Arrays클래스는 배열의 복사, 항목 정렬, 검색과 같은 배열을 조작 기능을 가지고 있다. 배열의 오름차순 정렬 Arrays.sort()메서드의 매개값으로 기본 타입 배열이나 String배열을 지정해주면 자동으로 오름차순 정렬이 되는 것을 볼 수 있다. int[] arr = {1, 26, 17, 25, 99, 44, 303}; Arrays.sort(arr); 여기서 배열이 제대로 정렬되었는지를 확인하기 위해 기본적인 toStirng 메소드를 써주면 원하는 결과값이 아닌 D@46a49e..
JAVA API 를 이용한 주사위 통계
2021. 8. 26. 14:16
JAVA
우선 랜덤으로 주사위의 숫자를 만들어주는 클래스를 만들어보자 우리는 주사위 A와 B의 숫자를 다른 2가지 방법으로 뽑아낼 것이다. 우선 이를 위해 자바 API를 사용해야 하는데 자바 API란 무엇일까? 자바 API란, 프로그램을 만들기 위한 도구이다. 이를 사용하면 더 편리한 프로그래밍이 가능하다. 자바 API는 패키지로 제공된다. 첫 번째 방법은 📌 java.lang.Math를 이용한 방법 Math클래스의 random() 메소드는 0.0 이상 1.0 미만의 범위에서 임의의 double형 값을 하나 생성하여 반환한다. 이 메소드는 내부적으로 java.util 패키지의 Random 클래스를 사용한 의사 난수 발생기(pseudorandom-number generator)를 사용하여 임의의 수를 생성하게 된다..
백준 알고리즘 파이썬(Python) 10972번 다음 순열
2021. 8. 25. 13:28
Algorithm
이 문제는 next_permutation 문제이다. next_permutation이란 무엇인가? 현재 순열의 상태에서 크기순으로(사전 순) 다음에 올 수 있는 순열을 생성해주는 역할을 한다. 예를 들어 1, 4, 3, 2라는 수가 있을 때 1 4 3 2 -> 2 4 3 1 -> 2 1 4 3 ~ 식으로 순열을 만들어주는 역할을 수행한다. 1 4 3 2의 경우 뒤에서부터 순열을 비교, 뒷 값이 앞 값보다 큰 경우까지 반복한다. -> 여기서는 (1, 4)가 해당 이때 1의 인덱스를 x라고 하고 4의 인덱스를 y라고 한다. 다시 두 번째 for 문으로부터 탐색하여 인덱스 x값 즉 1 보다 큰 값이 있으면 그 값과 1을 swap 한다. -> 여기서는 1과 2가 swap y에 해당하는 인덱스부터 정렬해준 뒤 이어..
백준 알고리즘 파이썬(Python) 9095번 1, 2, 3 더하기
2021. 8. 24. 14:26
Algorithm
규칙성을 찾아낸 뒤 DP를 이용하여 풀이하는 문제이다. 우선 숫자가 작은 경우 직접 개수를 세 규칙성을 찾는다. 1일 때 -> 1 2일 때 -> 2 3일 때 -> 4 4일 때 -> 7 5일 때 -> 13 이에 따라 점화식은 f(n) = f(n-1) + f(n-2) + f(n-3) (n>3 인 경우) n = int(input()) def sums(n): if n == 1: return(1) elif n == 2: return(2) elif n == 3: return(4) else: return sums(n-1) + sums(n-2) + sums(n-3) #규칙을 찾아내는게 중요! for i in range(n): a = int(input()) print(sums(a))