본문 바로가기

반응형

C, C++, C#/Algorithm

(11)
프로그래머스 - 124 나라의 숫자 이번에 풀어본 문제는 124나라의 숫자(12899번)문제를 풀어보았다. 풀어본 모든 문제를 포스팅 하는 것은 아니지만.... 어렵지 않은 문제인데 너무 헤맸다....(3시간이나 걸렸다...) 물론 나 홀로 혼돈의 미로 속으로 빠졌기 때문이다... 코딩테스트 연습 > 연습문제 > 124 나라의 숫자 programmers.co.kr/learn/courses/30/lessons/12899 문제 : 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. 문제를 보고 2가지를 떠올려서 코딩을 하였다.(누구나 쉽게하는 생각..) 1. 10진법을 3진법 전환 2. 진법 변환 시 나누기, 나머지로 1..
알고리즘 종류 Greedy(탐욕, 그리디 알고리즘) : 현재 상태의 최적을 선택해서 결과를 추출한다. > Sorting, DP의 느린 속도를 보완하기 위함 # 부분적인 최적해 DP(Dynamic Programming, 동적 계획법) : 모든 상황의 최적을 찾아내서 결과를 추출한다. > 점화식, 메모이제이션, 재귀 or 반복문 설계 # 최단거리 길 찾기, 노드의 최대 값 찾기
프로그래머스 - 정수 삼각형 내가 풀어본 문제(못 풀고 다른분들의 풀이를 보고 개념을 이해해서 다음 문제를 기약하기로했따.)는 프로그래머스의 43105번 문제이다. 코딩테스트 연습 > 동적계획법(Dynamic Programming) > 정수 삼각형 url : programmers.co.kr/learn/courses/30/lessons/43105 int solution(vector triangle) { int answer = 0; //! 아래 노드의 2개의 값과 더해줘야 하기 때문에 하단 결과 입력 메모리를 2배로 만들어줌 vector dp(triangle.size()); for (size_t i = 0; i < triangle.size(); i++) { //! 처음꺼도 계산해야하므로 처음껀 1개만 입력! if(i == 0) dp[i..
DP(Dynamic Programming) - 동적 계획법 요새 알고리즘을 공부하다보니 전략(?)에 대해 접근 방법이 있는 걸 조금씩 알게되고 있어서 잊지 않게 포스팅을 하려고한다. (다들 파보나치로만 나는 바보라서 더 헷갈렸다... 하지만 파보나치만큼 DP에 딱 맞는 예시는 없는거 같다.) 다른분들의 포스팅에서 매우 상세하게 되어있기 때문에 내가 이해한 내용만 적고 넘어가려한다.(난 정말 쉽고 정확하게 이해하지 않으면 안되기에 매우 허접한 용어로...) 동적 계획법을 풀기위해 필요한것! 1. 점화식 2. 큰 문제를 작은문제로 쪼개 풀기 or 작은문제부터 쭉 해결해나가기 3. 메모이제이션(똑같은 계산 결과는 저장하자) 1. 점화식 "점화식을 만족하는 수열을 점화식의 해"라고 한다.(그래서 최적해 찾기라는 말이 있나보다) -> 쉽게 생각하면 아래 int GooGo..
timb 밀리초 성능 시간 측정 밀리초 시간 체크하는 소스 입니다!!(1/1000초) 제가 나중에 성능 측정 시 확인을 위한 소스입니다! 밀리초만 출력합니다. #include #include "stdio.h" void main(){timeb time; //선언ftime(&time); // 현재 시간을 읽어드립니다.int nStart = time.millitm; for(int i = 0; i < 5000000; i++) // 시간 딜레이를 위한 for문{int a = i + i; } ftime(&time); // 현재 시간을 읽어드립니다.int nEnd = time.millitm; printf("Start\t : \t%d\n", nStart);printf("End\t : \t%d\n", nEnd);printf("Total\t : \t%d..
피보나치 수열 반복형 안녕하세요 오늘은 피보나치 수열 반복문에 대한 포스팅을 해보겠습니다. 따로 포스팅이라기보다... 소스를 보고 파악하시는게 가장 좋다고 생각합니다! 해당 소스 실행 결과입니다. #include "stdafx.h" #include "stdio.h" #include "time.h" void main() { while(true) { printf("몇번 입력할까요?"); int num = 10; scanf_s("%d", &num); printf("%d번째까지 피보나치를 실행한 반복의 속도 차\n", num); clock_t start, finish; double time_total = 0.0; //! 반복문 start = clock(); //int num = 10; int head = 0; int mid = 0;..
하노이의탑 반복형 하노이의탑 반복형입니다. 이 문제의 기본적 조건이 있습니다. 1. 큰 원판은 작은 원판에 올라가지 못한다. 2. 한번에 한개씩만 움직일 수 있다. 3. 3개의 움직일 수 있는 칸?이 있다. 이번 경우는 스택을 써서 하는건데 인터넷에서 떠도는 소스를 조금 고쳐서 나름 시각화..?했습니다. 다들 비슷해서 도움은 안되실지라도 한번씩 해보시면 좋을거같네요! 나름 시각화를 해봤습니다... #include int Stack[10]; int cur; char Grapic[3][3] = {{'1','2','3'}, {'-','-','-'}, {'-','-','-'}}; void GrapichArray() { for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { prin..
하노이의 탑 c 예제 안녕하세요. 이번에는 c를 공부하다보면 대부분 마주치는 하노이의 탑에대해서 올려 보겠습니다. 어린 얘들의 사고력?을 키워주기 위해 장난감으로도 있는데요. 이 문제의 기본적 조건이 있습니다. 1. 큰 원판은 작은 원판에 올라가지 못한다. 2. 한번에 한개씩만 움직일 수 있다. 3. 3개의 움직일 수 있는 칸?이 있다. 위키백과 가기 위키백과에 애니메이션까지 설명이 아주 잘 나와 있어요. 아래 있는 소스 또한 위키백과에 있는 소스를 가지고 만든 소스입니다. 거기에 시간을 재는 clock() 함수를 이용해서 시작 끝시간을 확인해 원판에 개수에 따라 걸리는 시간을 체크 했습니다. 전 항상 소스를 올리도록 노력합고있어요! 아래 캡쳐된 그림의 Count : 는 원판의 갯수고 뒤는 시간이에요! 대략 두배씩 시간이 오..

반응형