본문 바로가기
728x90

전체 글131

[프로그래밍] 메모이제이션 이해하기 재귀 호출은 문제를 풀기 위해 자기 자신을 호출하는 방식입니다. 가장 유명한 예제로 factorial을 들 수 있습니다. n!는 n*(n-1)!로 나타낼 수 있으며 이는 n!을 구하기 위해서 (n-1)!을 구하는 문제부터 해결 해야함을 의미합니다. n!의 코드는 아래와 같습니다 (n이 음수인 경우 처리는 제외.) int factorial(int n) { if (n == 1) return 1; else return n * factorial(n-1); } factorial(n)은 factorial(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.
[shell programming] awk linux 명령어 이해하기 이전 sed 명령어와 마찬가지로 아래의 포스트 내용 요약 및 추가한 것이다. https://likegeeks.com/awk-command/ 30 Examples for Awk Command in Text Processing - Like Geeks awk command is powerful, learn how to read from a file, use data fields, built-in variables, data variables, formatted printing and built-in functions likegeeks.com awk 명령어는 sed 명령어 보다 데이터를 조작하기에 더 강력하며, 로그파일 등 백만개의 줄로 이루어진 파일을 읽을 수 있는 수준으로 만드는 데에 큰 강점을 가지고 있다.. 2020. 12. 29.
[shell programming] sed linux 명령어 이해하기 해당 포스트는 sed linux 명령어를 이해하기 위해서 아래의 포스트를 해석하며 내용 정리 및 추가한 것입니다. https://likegeeks.com/sed-linux/ 31+ Examples for sed Linux Command in Text Manipulation - Like Geeks Linux text manipulation is awesome when using sed Linux command, we discuss substituting flags, replacing characters, deleting lines, Reading from a file likegeeks.com sed lunux 명령어 기본구조 sed linux 명령어는 지정해준 규칙에 따라 데이터 변경해준다. 명령어를 사용.. 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.
[💸내돈내산 후기💸] 동안 얼굴 관리 후기 (약손명가 양재점 추천) 미루고 미뤄왔던 약손명가 후기 시작합니다 :^) 나의 세 번째 약손명가 첨에는 비대칭이 신경쓰여 시작한 비대칭 관리, 다른 것도 받아보고 싶어서 받은 동안 얼굴 관리, 동안 얼굴 받았던 게 너무 좋아서 20회를 다 채우지도 않고 8월에 미리 세번째 결제를 하고야 말았습니다......! 비대칭과 동안관리를 정리한 지난 후기는 지난 후기를 참고해주세요 :^) soyoonique.tistory.com/10?category=809850 [후기]약손명가 내 돈으로 지불하여 작년 12월부터 이번 달까지 총 11달에 걸쳐서 다닌 약손명가 후기를 작성하려고 한다. (초기 2달은 대전 갤러리아 근처에 위치한 곳에서 받았고, 나머지는 양재역 근처에 위 soyoonique.tistory.com 약손명가 양재점 요즘 일 때문.. 2020. 11. 28.
728x90