본문 바로가기
728x90

공부/코딩 연습하기13

[Codility][C] NumberSolitaire 전체 성공 코드 int getMax(int a, int b) { return a > b ? a : b; } int solution(int A[], int N) { // write your code in C99 (gcc 6.2.0) int dp[100000] = {0}; dp[0] = A[0]; for (int i = 1; i = i - 6 && j >= 0; j--) { dp[i] = getMax(dp[i], dp[j] + A[i]); } } return dp[N-1]; } 결과 화면 2021. 1. 1.
[백준][JAVA] 3053번 택시 기하학 수학적으로 푸는 문제가 아니라 공식에 바로 적용하는 문제. 주의할 점은 소수점 자리를 맞추기위해서 아래 보기처럼 formatting을 사용해야한다. System.out.printf("%.6f\n%.6f", R * R * Math.PI, (double)R * R * 2); "%.6f"의 뜻은 floating point 중 소수점아래 6개만을 가져온다는 얘기이다. 이 때, (double)을 이용하여 형변환을 하지않으면 R * R * 2는 int인데 f로 불러옴으로 에러 메세지가 뜬다. 전체코드 import java.util.Scanner; import java.lang.Math; public class Main { public static void main(String[] args) { Scanner sc .. 2020. 12. 29.
[백준][C] 11053번 가장 긴 증가하는 부분 수열 (동적 계획법) 전체 성공 코드 #include #define MAX_N 1000 int getMax(int a, int b) { return a > b ? a : b; } int dp(int n, int* arr) { int DP_table[n + 1]; int max_value = 1; DP_table[0] = 0; for (int i = 1; i 0; j--) { if (arr[i - 1] > arr[j - 1]) { DP_table[i] = getMax(DP_table[j] + 1, DP_table[i]); } } max_value = getMax(DP_table[i], max_value); } return max_value; } int main() { int n; scanf("\n%d", &n); int arr.. 2020. 12. 22.
[Codility][C] BinaryGap 전체 성공 코드 int getMax(int a , int b) { return a > b ? a : b; } int solution(int N) { // write your code in C99 (gcc 6.2.0) int flag = 0; int temp = 0; int max_value = 0; while(N != 1) { if (N % 2 == 0) { if (flag) { temp++; max_value = getMax(max_value, temp); } } else { // N % 2 == 1 if (!flag) { flag = 1; } else { temp = 0; } } N = N / 2; } return max_value; } 결과 화면 2020. 12. 22.
[백준][C] 11727번 2×n 타일링 2 (동적 계획법) 이전에 포스팅한 타일링 문제에서 약간의 변형이 된 문제이다. soyoonique.tistory.com/46?category=807751 [백준][C] 11726번 2×n 타일링 (동적 계획법) 가로 크기가 n인 곳을 채워야 할 때, 처음 타일을 세워서 놓는 경우 가로의 크기가 (n-1) 인 곳을 채우는 문제가 되고, 반대로 눞혀서 놓을 땐 (n-2) 곳을 채워야하는 문제가 된다. 이를 이용하여 점 soyoonique.tistory.com 다른 점이 있다면 이전에는 (n - 2) 크기의 타일을 부르는 경우가 1 x 2 타일을 가로로 나란히 놓은 경우밖에 없지만, 이번에는 정사각형을 놓는 경우가 추가되었다는 것이다. 즉, 점화식은 D[i] = D[i - 1] + 2 * D[i -2]이 되고 이전과 동일한 방.. 2020. 12. 21.
[백준][C] 11726번 2×n 타일링 (동적 계획법) 가로 크기가 n인 곳을 채워야 할 때, 처음 타일을 세워서 놓는 경우 가로의 크기가 (n-1) 인 곳을 채우는 문제가 되고, 반대로 눞혀서 놓을 땐 (n-2) 곳을 채워야하는 문제가 된다. 이를 이용하여 점화식을 세우면 D[i] = D[i - 1] + D[i -2]가 되고 해당 문제를 푸는 방식은 재귀함수를 이용하거나 동적 계획법을 이용하면 풀 수 있다. 하지만, 실험해본 결과 재귀함수를 이용하여 제출하면 시간 초과의 결과가 나온다. 재귀함수를 이용하더라도 메모제이션을 사용한다면 통과할 수 있을 것 같긴하다! 또한 주의해야할 것이 처음의 풀이는 D[i] = D[i - 1] + D[i -2]를 저장하고 나중에 출력할 때 D[n]를 10007로 나누었는데 그렇게 하면 오버플로우가 나는지 오답이라고 뜨니! 저.. 2020. 12. 21.
[엘리스코딩][python] 도레미 파이썬 I 실력 확인 테스트 부정행위 방지를 위해 내려달라는 엘리스 측의 요청으로, 해당 글을 내리기로 결정하였습니다. 파이썬 코딩 초보자분들에게 참고가 되고자 코드를 직접 작성하여 공유해 드렸지만, 본래의 취지와 달리 단순 복사 붙여넣기의 형태로 오용되는 것이 포착되어 글을 내리게 되었습니다. 그동안 도움이 되었다는 분들에게 감사의 마음 전합니다. +) 가입안하시고 비밀글로 질문하시는 분들, 제가 비밀글로 답변을 단다면 못보십니다... ++) 이메일 주소 주셔도 제가 쓴 코드를 드리는 일은 절대 없습니다. 참고해주세요 추가로 오신 김에 광고 클릭 부탁드립니다 ^^ 광고 클릭은 블로그 운영에 큰 도움이 됩니다. 2019. 12. 12.
[백준][C언어]2217번 로프 가장 중요한 것은 로프를 병렬로 사용할 경우 들 수 있는 무게는 가장 약한 로프에 제한이 걸리게 된다. 예시로 10, 15를 들어 올릴 수 있는 로프가 있어 병렬로 물체를 들어올린다면 들 수 있는 무게의 최대는 한 로프가 중량 10을 최대로 들 수 있고 병렬의 경우 같은 중량이 걸리므로 10 * 2가 된다. 즉, 임의로 몇 개의 로프를 고르는가에 대한 제한은 없지만, 고른 개수를 k라고 할 때 k개의 로프 중 가장 약한 로프 무게가 병렬로 연결된 로프에 걸릴 무게가 되고, 그 무게에 k를 곱한 값이 들어올릴 수 있는 최대 무게가 된다. k 번째로 약한 로프를 구하기 위해 정렬 알고리즘을 사용하였다. 전체 성공 코드 #include #include int comp (const void *a, const v.. 2019. 12. 12.
[백준][JAVA] 1110번 더하기 사이클 이번 코드의 중점은 알고리즘보다 JAVA의 기본 메소드 사용에 익숙해지는 데에 있다. 때문에 모든 언어에서 사용할 수 있는 알고리즘으로 구현한 코드와 JAVA 메소드를 사용한 코드 두가지를 보여주고자 한다. 모든 언어에서 사용할 수 있는 방법은 수학적으로 10의 자리와 1의 자리는 각 num / 10과 num % 10 이다. 즉, 숫자를 10으로 나눴을 때의 몫과 나머지로 나타낼 수 있다. 전체 성공 코드 1. JAVA 메소드를 사용한 방법 import java.util.Scanner; public class Main { public static int sumValue(int N) { String num = String.valueOf(N); int sum_digit = 0; for (int i = 0; .. 2019. 10. 7.
728x90