인기 글
-
Algorithm
[Level 3] 3. 거스름돈 경우의 수
3. 거스름돈 경우의 수 Algorithm - Level 3 - 풀이 1. 이 문제도 Dynamic Programming으로 접근가능하다. 2. n+1 크기의 배열을 선언한다. 3. 1부터 n까지 원소를 0으로 초기화한다.-> 만약, 화폐단위 중 1이 존재하면 모든 원소를 1로 초기화한다. 5. 화폐단위와 같은 거스름돈은 (n=5, money=5) 경우의 수를 1 증가한다. 6. 그 외는 n까지의 인덱스를 차례로 접근해 작은 화폐단위를 뺀 인덱스의 원소값을 더해준다.-> ex) money=2, index=5일 경우, 5-2=3 index에 위치한 원소값을 더해준다. 이는 그 전에 계산한 경우의 수를 더해주는 것으로 거스름돈이 5인 경우의 수는 money=2를 하나 선택하고 남은 돈 3의 경우의 수와 같다..
-
Project
[졸업 작품] Image Denoising & Colorizing Network.
Image Denoising & Colorizing Network. - 2018년** 제가 졸업 작품을 위해 공부한 내용을 정리한 것이라 매우 간략합니다. 자세한 구조, 학습 방법과 같은 것은 생략하겠습니다. ** 1. MOTIVATION 영상을 이용하는 application은 영상의 품질이 성능을 좌우한다고 볼 수 있다. (e.g. object detection) 하지만, 영상의 품질은 우리가 원하던 것처럼 항상 좋을 수 없다. 전기적 간섭과 같은 환경적인 요인에 의해서 noise라는 원치 않는 pixel 값을 갖게된다. 이러한 noise를 제거하는 기존의 방법은, 주변 pixel의 값을 이용하는 것이다.(주변 pixel의 값을 평균을 내서 적용하거나, 최대 또는 최소값을 이용하거나...) 이러한 방법..
-
Algorithm
[Level 2] 12. N개의 최소공배수
12. N개의 최소공배수 Algorithm - Level 2 - 풀이 1. 최소공배수를 구하는 알고리즘은 최대 공약수를 이용한다.-> 유클리드 2. 최대 공약수는 a를 b로 나눠 떨어지면 b가 최대 공약수가 되며, 그렇지 않은 경우 b가 a가 되고 나머지 r이 b가 되어 다시 반복한다. 3. 최대공약수를 이용하여 최소 공배수를 구한다.-> a*b/(gcd(a,b) 4. N개의 최소공배수를 구하는 것은 한번에 N개를 연산하는 것과 2개씩 연산하여 구하는 결과가 같다.-> i번째와 i+1번째 원소를 연산하고 그 결과를 i+1에 저장-> 이를 반복하여 마지막 원소의 값은 N개의 최소공배수 값이 된다. 1234567891011121314151617181920212223242526272829303132#inclu..
-
Algorithm
[Level 2] 9. 피보나치 수
9. 피보나치 수 Algorithm - Level 2 - 풀이 1. 피보나치 수도 이전의 수에 영향을 받는다. -> Dynamic programming 점화식 이용. 2. int형의 범위를 초과할 수 있다. && 2 이상의 수가 입력되면 1234567로 나눈 나머지를 구한다.-> modular 연산은 수들을 다 더한 후 나머지를 구하나, 먼저 나머지를 구한 후 덧셈한 것이 결과가 같다.1234567891011121314151617181920212223#include #include using namespace std; int solution(int n) { int answer = 0; int dp[n+1]; if(n==1) return 1; dp[0] = 0; dp[1] = 1; for(int i=2; i
최신 글
-
Project
[졸업 작품] Image Denoising & Colorizing Network.
Image Denoising & Colorizing Network. - 2018년** 제가 졸업 작품을 위해 공부한 내용을 정리한 것이라 매우 간략합니다. 자세한 구조, 학습 방법과 같은 것은 생략하겠습니다. ** 1. MOTIVATION 영상을 이용하는 application은 영상의 품질이 성능을 좌우한다고 볼 수 있다. (e.g. object detection) 하지만, 영상의 품질은 우리가 원하던 것처럼 항상 좋을 수 없다. 전기적 간섭과 같은 환경적인 요인에 의해서 noise라는 원치 않는 pixel 값을 갖게된다. 이러한 noise를 제거하는 기존의 방법은, 주변 pixel의 값을 이용하는 것이다.(주변 pixel의 값을 평균을 내서 적용하거나, 최대 또는 최소값을 이용하거나...) 이러한 방법..
-
Algorithm
[백준][11720][Loop] 숫자의 합
숫자의 합문제N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.입력첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.출력입력으로 주어진 숫자 N개의 합을 출력한다. __해설__10의 자리의 숫자를 표현하는 거라면 고민 좀 해야겠지만 문제는 1의 자리들을더 하는 것으로 보고 이 문제를 풀었다. 한번에 공백 없이 입력된 수들을 1의 자리들로 분리하려면 문자열로 받는 것이편하다 생각하고 string 변수로 입력받아 한 문자에 '0'값을 빼는 것으로 해결하였다.12345678910111213141516#include #include using namespace std; int main(void) { int n; str..
-
Algorithm
[백준][1924][Loop] 2007년
2007년 문제오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.입력첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.출력첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다. __해설__해설이라 하기 그렇지만 내가 생각한 방법은 switch case문을 이용하는 방법이다.요일을 기억하는 string 배열을 선언하고 총 일자를 7과 나머지 연산을 통해 요일을 구하는 방법이다.12345678910..
-
Algorithm
[백준][2741][Loop] N번 출력
N번 출력 자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다. 첫째 줄부터 N번째 줄 까지 차례대로 출력한다. __해설__ 첨에 진짜 알고리즘이 아니라 C++ 코딩 기초 문제인줄 알고 c++로 자신감 넘치게 제출 결과는 시간초과 ㅋㅋㅋㅋㅋㅋㅋ 아 나는 빡빡이다. 나는 빡빡이다... 결론부터 말하면, cin, cout은 printf, scanf보다 느리다는 것. 123456789#include int main(void) { int n; scanf("%d", &n); for (int i = 1; i
-
Algorithm
[백준][2839][Op] 설탕 배달
설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) 상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N..