(문제 내용은 직접 검색하기)교훈 : 그리디 알고리즘은 미래를 생각하지 않고 각 단계에서 최선의 선택을 하는 것이다. 그런데 난 처음에 이 문제를 풀 때 미래를 생각하면서 풀었다.무슨 말이냐면 각 for문을 돌렸을 때 i 와 i+1 을 고려한게 아닌안에 for문을 하나
오늘은 백준 1932번 문제를 풀어보며 동적 계획법에 대해 어떻게 접근해야 하는지 감을 잡았다.동적 계획법에 대한 설명을 위키트리에서 발췌해 보자면 \*\*\*\*동적 계획법의 원리는 매우 간단하다. 일반적으로 주어진 문제를 풀기 위해서, 문제를 여러 개의 하위 문제(
문제링크 :https://www.acmicpc.net/problem/17298자신보다 오른쪽에 있는 수 중에서 가장 왼쪽에 있는 수들의 수열을 구하는게 문제이다. 처음에는 그냥 스택을 이용하지 않고 배열을 이용해서 풀었는데, 그렇게 되면 시간복잡도가 O(n^2
분할 정복법분할 정복법(Divide and Conquer)은 여러 알고리즘의 기본이 되는 해결방법으로, 기본적으로는 엄청나게 크고 방대한 문제를 조금씩 조금씩 나눠가면서 용이하게 풀 수 있는 문제 단위로 나눈 다음 그것들을 다시 합쳐서 해결하자는 개념에서 출발하였다.
링크: https://programmers.co.kr/learn/courses/30/lessons/60057문제의 본문은 제대로 읽었지만, 예시 부분을 제대로 읽지 않아서 조건을 제대로 활용할 수 없었다.또한, 노래를 들으면서 풀어서 생각을 제대로 하지 않았다
replaceAllreplacesubstringcharAtputremoveisEmptygetclearcontainsKeycontainsValuevaluessizeputAll
문자열에서 뒤에 4자리를 빼고 전부 \*로 바꾸는 간단한 문제였다당연하게도 나는 반복문을 이용했는데 다른 사람의 풀이 중에 이를 replaceAll 메소드와 정규표현식을 사용한 사람이 있어서 글을 쓴다.정규표현식을 전혀 모르는 것에 대해서 반성하게 되는 시간이였다.오늘
index 사용String splitto char array스트림 사용
문제https://programmers.co.kr/learn/courses/30/lessons/12903문자열에서 가운데 글자를 가져오는데, 글자수가 짝수인 경우에는 가운데 두글자를 가져오면 된다.파이썬으로 알고리즘을 시작한지 얼마안돼서 아직 파이써닉 코드에
이 알고리즘을 파이써닉하게 구현한 예제가 있길래 복습하고 싶은 마음에 글을 작성한다
https://programmers.co.kr/learn/courses/30/lessons/17681?language=python3문제의 핵심은 숫자를 이진수로 바꾸는 것이였다.처음에는 이진수로 바꿔주는 함수가 있는 줄 모르고 직접 작성했었다가 다른 사람의 풀
https://programmers.co.kr/learn/courses/30/lessons/42862?language=python3체육복을 도둑맞은 상황에서 체육복이 2개인 사람들이 체육복을 빌려주어서 체육 수업을 들을 수 있는 최대 학생 수를 구하는 문제다.
등차수열의 합을 구하는 여러가지 방식클래식한 방법이다파이써닉한 방법등차수열의 합의 공식을 이용한 방식문제 : https://programmers.co.kr/learn/courses/30/lessons/82612파이써닉한 코드를 더 연습하자..
알고리즘 문제를 풀다보면 순열과 조합을 이용해야 하는 경우가 자주 나온다. 여러가지 구현 방식을포스팅해보려 한다.list에서 n개를 순서대로 뽑는 모든 경우를 리스트로 반환list에서 n개를 뽑는 모든 경우를 리스트로 반환
프로그래머스 실패율 문제에서 dictionary 타입을 정렬할 필요가 있었는데, 제대로 하는법을 몰라서 굉장히 해맸다. 이번 기회에 disctionary 정렬법을 정리해두려고 한다.sorted(myDict.items(), key=lambda x: x0, reverse=
10진법에서 N진법으로 수를 전환하는 방법을 정리해보려고 한다 여기서 num은 string 타입
스택을 특정한 조건에 따라 활용해야 할 때 아래와 같이 쓸 수 있다. 스택을 이용할 때 위 코드처럼 while문을 통해 특정 조건에서 pop해가면서 stack을 완성하면된다
일주일 단위로 풀었던 알고리즘 문제에 대해서 간단하게 리뷰하려고 한다.문자열에서 이어지는 같은 두 글자를 제거하는 문제였다. 스택 자료구조를 이용하면 쉽게 풀 수 있는 문제였다
어떤 수를 연속된 자연수의 합으로 만들 수 있는 경우의 수를 구하는 문제.dp를 이용하거나 완전탐색을 이용하여 풀 수 있지만 테스트 케이스에서 완전탐색만 사용해도 풀 수 있게 돼 있음. 완전탐색을 하는 경우에도 조건을 잘 넣으면 경우의 수를 반이상 줄일 수 있는 것을
DP를 통해 풀어야 하는 문제. dp 배열로 2차월 배열을 이용하면 메모리 4mb를 초과해서 (dp배열 & coin배열) dp 배열을 1차원 배열로 구현해야 한다. 점화식 : dpi는 coin 0~i까지를 활용해 j를 만들 수 있는 경우의 수를 나타낸다.dpi = dp