그리디 알고리즘(탐욕법)은 현재 가장 좋아보이는 것을 고르는 방법을 의미한다. 그리디 알고리즘은 현재 가장 좋아보이는 것을 선택했을 때도 최적의 해가 나오는지 분석하는 것이 가장 중요하다. 거스름돈 문제 거스름돈으로 사용할 500원, 100원, 50원, 10원 짜리
문제 : N과 K가 주어질 때 N이 1이 될 때까지 1번 또는 2번 과정을 수행해야 하는 최소 횟수를 구하는 프로그램을 작성하시오.어떤 수 N이 1이 될 때까지 두 과정 중 하나를 선택하여 반복 수행해야 한다.N에서 1을 뺀다N을 K로 나눈다.2번의 경우 N이 K로 나
문제 :각 자리가 숫자 0부터 9로만 이루어진 문자열 S가 주어졌을 때 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하여 숫자 사이에 "x" 혹은 "+" 연산자를 넣어 결과적으로 만들 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. 예를 들어 02984 라는 문자
연결리스트 원소를 저장할 때 다음 원소가 있는 원소의 위치를 포함해서 저장하는 방식의 자료구조이다. 원소들은 여러곳에 흩어져 있다. 예를 들면 '안', '녕', '하', '세', '요' 5개를 순서대로 기억해야 하는데 모든 문자가 일렬로 붙어있지 않고 여러 군데 흩어
프로그래머스 레벨1 문제 중에 최대공약수와 최소공배수라는 문제를 접하게 되었다.코딩으로는 이걸 어떻게 구하지..?라는 생각이 가장 먼저 들었고 고민해봐도 테케 몇개만 맞고 틀리길래머릿속이 복잡해져서 솔루션을 여러군데 찾아보고 정리해보고자 한다.유클리드 호제법최대공약수를
1, 2, 3 이 있으면 1, 3, 2 로 바꾸는 것처럼 순열을 만드려면 swap을 하는 부분이 필요하다.결과는 3!인 6개의 순열이 나와야 한다.4시간째 재귀함수를 사용한 순열 코드를 들여다 봤는데 아직도 머릿속이 복잡해서 정리가 잘 안된다....ㅜㅜㅜ그냥 머리로 순
알고리즘 입문한지 얼마 안된 나에겐 이 문제가 스택을 사용해서 푸는 문제인지 몰랐고 무식하게 풀어재낀 결과 정확성은 100%를 받았으나 효율성에서 0점을 받고 말았다.효율성을 어떻게 줄여야하나 고민하던 중 이 문제는 stack을 사용해서 풀면 된다는 힌트를 얻어서 코드
효율성 테스트에서 0점을 맞았다.이번에도 정확성 테스트에서 TC 5개를 모두 통과했지만 항상 효율성이 똥인 코드를 짜는 나를 발견할 수 있다.처음에 이 문제를 만났을 때는 정확성 테스트에서부터 갈려나갔었다...ㅠ동명이인을 처리하는 코드에서 문제가 있었는데 complet
소수찾기 문제소수찾기 문제... 무식하게 풀었더니 역시 또 효율성 테스트에서 거부를 당했다. 뜨흑흑 정말 고민고민해서 잘 풀었다고 생각했는데 TㅇT그래서 구글링하던 중에 에라토스테네스의 체 라는 방법이 효율적이라는 얘기를 주워듣고 이 기회에 이 알고리즘이 뭔지도 겸사겸
큰돌님 블로그를 참고해서 DFS 개념을 먼저 이해하고 예시 문제를 풀어보았다.먼저 C++코드로 작성되어 있었기 때문에 C++ 코드로 이해한 바를 다시 자바스크립트 코드로 구현해보았다.예시 문제 종화는 방구쟁이야!를 푸는 코드이다.문제는 위와 같다.사실 이건 C++ 솔루
BFS는 너비 우선 탐색으로 인접해있는 가까운 노드를 먼저 탐색하는 알고리즘이다.BFS 이론은 어느정도 이해 했는데 코드를 어떻게 짜라는거지?.. 에 대한 의문이 계속 남았다.큰돌님 블로그의 BFS 예시 문제로 공부했다.이해가 안가지만.. 최대한 이해해보려고 정답 코드
백준 2559 수열처음 봤을 때 어 구간합인가보다! 해서 풀려고 했는데 처음 접근을 잘못했어서 틀렸던 문제이다.구간합인거 몰랐을 때는 이중 for문 밖에 모르니 당연히 .. 시간초과로 틀렸었고..ㅎㅎ풀이 코드일단 psum 배열에 합계를 계속 누적 시켜서 저장하고그 다음
백준 1620 나는야 포켓몬 마스터 이다솜제출 코드 (시간초과)이중 for문 쓰면 시간 초과 날 것 같은데..라고 생각은 하고 있었지만 거의 다 왔는데 다른 방법이 생각이 안나서 일단 제출!!! 하고 보자는 생각으로 제출했다.물론 결과는 당연하게도 시간초과 ㅋㅋㅋc++
백준 3986 좋은 단어이상하다..? 분명히 맞은 로직 같은데 왜 결과가 이상할까..하고 디버깅하다가 보니 stack을 전역에 선언한 부분때문에 초기화가 안된 문제라는 것을 발견했다. ㅎㅎ예전에 전역에 선언 안했다가 시간초과 났던 기억때문에 요즘에는 웬만하면 전역에 때
백준 9093 단어 뒤집기문제문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.풀이 코드getline으로 여러번 입력 받는 방법을 몰라서 못 풀고 있었는데 감사하게도 버
백준 1012 유기농 배추y, x가 아니고 x, y로 주어져서 배추를 잘못 심는 바람에 배추농사 망한 줄 알고 한참 찾았었다.. ㅠㅠ 입력도 여러번 받는 것 때문에 처음에 while 반복문 안에서 변수 초기화를 잘못 설정해서 배추의 개수를 세고 있길래 이것 때문에도 한
백준 17298 오큰수 > 머리를 아무리 굴려도 도저히 올바른 솔루션이 생각이 안나서 다른 분의 풀이를 찾아보고 어떻게 풀었는지 보고 아 이렇게 푸는거였네.. 하고 풀어본 문제.. 골드4 문제라 어려웠구나...ㅠㅠ 처음에는 deque와 stack으로 풀려고 했는데
오랜만에 프로그래머스 알고리즘 문제 풀러왔다.처음 문제를 봤을 때 stack으로 풀려고 했는데 예외 있는거 보고 바로 우회해서 정규 표현식으로 다시 작성했다.근데 정규 표현식으로 하니 시간 초과가 난다.하나씩 찾아서 없애고 replace 시키는 방법을 선택했는데 시간
프로그래머스 2레벨도 제대로 못 푸는데(생각해보니 1레벨도 못 풀면서)3레벨 푼다고 까불었다가 도망쳐왔다. 아이템 줍기 라는 DFS/BFS 3레벨 문제 풀어본다고 패기있게 들어갔는데, 문제 처음 대충 봤을 때는 아! BFS로 가면 되겠다. 하고 열심히 코드 짰는데 외
며칠 전에 순열 공부하면서 재귀도 잠깐 살펴봤었는데 재귀 지옥에 빠져서 한참동안 헤맸던 기억이 있다. 1부터 N까지의 합을 구하는 함수 1부터 N까지의 합을 구하는 함수 sum을 재귀로 구현해보았다. 수학적 귀납법