코딩테스트가 알고 보니 IDE와 같은 것들을 못 쓰고 단축키도 못 쓴다는 것을 알게 되었다. 그래서 기존에 해왔던 이클립스로 푸는 방식을 바꿔서 백준이나 프로그래머스와 같은 사이트에서만 풀어야겠다.그 첫번째 문제로 백준 11654처음 작성했던 코드문제점1\. Strin
의문점 Scanner가 아니라 다른 방법으로 입력을 받을 수 있을까? Array 타입[] 배열이름 = new 타입[배열길이]; length vs. length() vs. size() length -arrays(int[], double[], String[])
문자열을 공백을 기준으로 어떻게 자르는지 몰라서 순열을 이용해서 짝수번째에 있는 문자들만 orderArr이라는 char배열에 넣어줬다.
12월 한 달동안 코딩테스트 문제를 적어도 매일 하나씩 풀며 알게된 것을 정리 및 암기하려고 한다. 일단 문제를 풀어보며 감을 익히는 게 목표다. 12월은 문제에 직접 부딪히는 게 중요할 것 같다. 문제를 풀어보며 부족한 개념은 키워드로 정리하고 공부할 것이다.http
https://www.acmicpc.net/problem/1018 문제 막혔던 부분 1 색을 어떻게 칠해야 8*8로 나눴을 때 가장 적게 수정할 수 있을끼?? -> 문제에서 분명히 이렇게 친절하게 말해주고 있다. 체스판을 색칠하는 경우의 수는 두 가지뿐으로, 맨
문제 브론즈 3의 문제여서 그런지 30분 정도만에 풀었다. 쉬운 문제를 풀어보니 그래도 뭔가 할 수 있다는 생각이 든다 ^^ 사고 변수 입력 받기 네 개의 값을 Scanner로 입력 받았다. sc.close();까지 야무지게 해주기. cf. sc.close()는
모르겠을 땐, 바로 해답을 찾아보지 않더라도 문제해결을 위해 반드시 필요한 개념은 찾아보면서 하는 게 좋을 것 같다. 음.. 그렇다 호호아니 이렇게 풀린다고?필요한 개념이 꽤 어려워서 아래 달아놓은 블로그들의 정리 내용을 이해하고 다시 풀어보려고 한다.이번 문제는 기본
문제를 처음 풀 때 쉬워보이는 나머지 입력 형태에 대한 생각을 하지 않고 풀이를 했다. 문제 풀이를 할 때 처음으로 주목해야 할 것은 "입력과 출력이 어떤 방식으로 이뤄지고 있는지"이다. 문제에서 볼 수 있듯이 입력은 여러 개의 테스트 케이스로 이쿼져 있고 출력의 경우
666이 연속으로 적어도 3번 이상 들어간지 확인해주기 위해 처음엔 숫자로 나눠서 그 몫이 6인지 아닌지 확인해보는 방식으로 진행해보았으나, 너무 복잡함을 깨닫고 어떻게 해야 할지 찾아보았다. 일단 문자열로 바꿔서 "666"이란 문자열이 포함되는지 확인하는 게 훨씬 낫
2차원 배열을 선언해서 입력하는 자료구조를 만들고, 처음으로 BufferedReader를 사용해서 여러 개의 값을 for문으로 계속 받아준 다음, 객체 정렬을 할 때 사용자 정의를 해 줄 수 있는 Comparator 인터페이스의 compare() 추상 메소드를 오버라이
재귀용법을 익히기 위해 선택한 쉬운(?) 문제였다. 알고리즘 문제를 풀 때 내가 메소드(함수)를 직접 만들고 해당 메소드를 호출해서 만드는 게 처음이라 애를 먹었다. 특히 main() 메소드가 아니더라도 만들어준 static void 메소드에서 System.out.pr
리스트에 넣고 앞에 두 개의 값을 더해주는 식으로 결과값을 저장해주었다. 재귀를 어떻게 써야 할지 고민을 더 해봐야 할 것 같다.
재귀함수를 써서 풀어야 하는 게 쉽지 않았다. 하노이 탑의 알고리즘과 점화식을 잘 몰랐는데, 이 부분은 고민해도 잘 풀리지 않아서 https://st-lab.tistory.com/96 이 분의 블로그를 참고했다. 다시 한 번 더 풀어봐야겠다..!
이틀에 걸쳐 풀어보려고 했으나 시간초과가 떠서 결국 다른 블로그를 참고해보았다.혼자 풀어보면서 소문자를 대문자로 만드는 upper() 함수와 대문자를 소문자로 만드는 lower() 함수를 알게 되었고, 어떤 원소가 리스트안에 몇 개 존재하는지 파악하는 seq.count
한 줄의 공백으로 된 문자열을 split()해서 바로 int()로 형변환이 안되더라.. 그래서 일단 str형으로 입력받은 다음, 해당 변수에 다시 int() 형변환을 한 값을 대체해서 넣어주었다. 그렇게 하니까 되었지만, 위에 석연찮은 부분을 알아보기 위해 다른 분들의
문제 풀이
map(int, a)리스트의 요소를 지정된 함수로 처리함보통 여러 개의 데이터를 한 번에 다른 형태로 바꾸기 위해 사용함문자열을 int형으로 변환
처음에 선형탐색으로 in을 사용해서 풀었을 땐 풀리긴 했으나 시간초과가 떴다.그래서 자료구조 책을 보면서 검색을 더 빠르게 할 수 있는 알고리즘이 없나 살펴보았다. 검색 알고리즘 중 두 번째 챕터였던 이진 검색을 통해 더 빠르게 검색 할 수 있다는 걸 알게 되고, 책의
문자열을 모두 분해해서 푼 나와는 달리 다른 사람들의 코드를 보니n\[::-1]이라는 전체를 반대로 슬라이싱해주는 것을 이용해서 간결하게 풀었다. 문제를 풀 때 어떻게 입력이 되는지 뿐만 아니라 출력이 되는지도 중요하다. 이 문제에선 출력을 각 줄마다 주어진 수가 팰린
어떻게 찾지..? 이런 생각에 막막해서 다른 분들의 코드를 참고했다. 일단 이진탐색을 이용하면 "쉽게" 풀린다는 부분만 보고 이진탐색 문제를 방금 풀었는데 적용할 생각이 안나다니..!! 하면서 역시 개념을 아는 건 문제를 봤을 때 직접 적용할 생각이 나기까지 해야 한다
자료구조 책에 소수 나열하기 부분이 있었어서(p98) 총 세가지 방식으로 풀어봤다. 결국 에라토스테네스의 체를 이용한 마지막 풀이 방식이 시간초과가 나지 않았다. 이 부분은 솔직히 책으로 볼 때도 이해가 되지 않아 별표를 쳐뒀던 부분인데, 아직도 이해가 되지 않는다.
stack을 이용할 때 count같은 변수를 활용해서 stack에 하나씩 append해주는 것이 어려웠다. 특히 연달아서 값을 pop해줘야 할 때 어떻게 해줘야 하나 발상하는 게 쉽지 않았다.모든 경우의 수를 고려해서 문제를 스스로 풀긴 했지만, 시간초과가 떠서 결국
파이썬은 따로 stack 구조를 제공하지 않기 때문에, 기본 클래스 list를 사용하여 stack을 표현할 수 있다.push로는 .append()pop으로는 .pop()top으로는 stack\[-1] : 마지막 원소를 제거하지 않고 가져오기만 할 때입출력을 빠르게 받으
que의 위치를 처음에 풀 때 반복문 안에 선언해줘서 헤맸다. 반복문 안에 변수를 만들어주면, 동작을 실행할 때마다 초기화되어 아무것도 남지 않게 된다. 따라서 변수의 값을 반복문을 하며 계속 쌓거나 변화시키고 싶다면 반복문 위에 선언해주면 된다.cf. 비슷한 짝꿍 문
테스트케이스맨 앞의 데이터가 가장 큰 수가 아니면 맨 뒤로 가야 하는 정렬이므로, M=0에 해당되는 1은 다섯번째로 출력되어야 한다. 이 문제에서 어려웠던 부분은 위의 테스트케이스를 만족하도록 하는 것이었다. https://assaeunji.github.io/
https://programmers.co.kr/learn/courses/30/lessons/12948https://emilkwak.github.io/python-list-indexing-slicing-using-minus-integer
에라토스테네스의 체 (이름은 중요하지 않을 듯)소수는 해당 소수의 제곱근 이하의 정수로 나눴을 때 나누어 떨어지지 않으면, 소수이다.https://velog.io/@letsbebrave/백준-1929번-소수-구하기
https://www.acmicpc.net/problem/2108처음 풀 때 시간초과가 떴다.그 해결책은sys.stdin.readline()collections 모듈의 Counter 클래스로 최빈값 구현반복문으로 여러줄 입력받는 상황에서는 반드시 sys.std
계속 시간초과가 떴는데, 파이썬 라이브러리 중 collections의 deque를 활용헤서 코드를 구현해서 해결할 수 있었다.deque는 list보다 속도가 빨라서 pop(0)와 같은 메서드를 수행할 때 리스트의 경우 O(N)연산을 수행하지만 deque는 popleft
1 ≤ N ≤ 1,000,000 이면 브루트포스로 풀 수 있다숫자별 자릿수의 합 구하기문제에 주어진 조건을 보면첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.라는 것이 있다.보통 100,000,000까지 범위가 주어질 때는 브루트포스로 풀 수 있다.
기본적으로 해당 문제는 계차수열을 구현할 수 있는지 물어보는 문제이다.2 ~ 7 - 2개8 ~ 19 - 3개20 ~ 37 - 4개38 ~ 61 - 5개..6의 배수씩 계속 수가 늘어가고 있는 것을 볼 수 있다.반복횟수가 정해지지 않고 어떤 조건이 성립될 떄까지 반복해서
최대공약수, 최소공배수최대공약수는 두 숫자의 공통된 부분을 곱해주면 된다.최소공배수는 따로 구하지 않았고, 아래 수식을 고안해서 풀어주었다.최소공배수 = a \* b // 최대공약수 리스트가 비어있는지 확인하는 법유클리드 호제법을 이용한 풀이https://ve
오름차순 정렬 시 sorted() 함수를 써주었다.sorted(정렬할 데이터)sorted(정렬할 데이터, reverse 파라미터)sorted( \~~ , reverse=True)이면 내림차순으로 정렬해서 반환됨sorted(정렬할 데이터, key 파라미터)sorted(정
https://www.acmicpc.net/problem/2775 A for B in C A: 최종적으로 리스트에 들어갈 요소 (함수 호출 or 계산 식 모두 가능)B : C의 요소 하나하나를 나타냄C : 지능형 리스트에서 활용할 또 다른 리스트입니다.data
원소들의 순열과 조합을 통해 경우의 수를 추출해내는 방법import itertools조합은 서로 다른 n개 중에 r개를 선택하는 경우의 수(순서 X)띄어쓰기로 만들어진 여러 개의 수를 하나의 리스트에 담는 법import sys 해줘야 사용 가능
문제 개념 이진탐색 풀이
문제 풀이
import math를 하고 math.ceil()을 해줘야 계산 결과에 올림이 적용될 수 있다.부등식의 계산이 이루어지므로 시간초과가 발생한다.a, b, v가 입력되면 바로 답이 나오는 구조로 변경해야 시간초과가 뜨지 않을 수 있다. 따라서 답을 구할 수 있는 수식을
문제 풀이
문제 풀이
마지막 테스트케이스였던 ())(()를 NO로 판별해내는 게 어려워서 다른 풀이를 참고했다. )(의 경우 닫히지 않았기 떄문에 어떻게 하면 NO로 풀어낼 수 있을지가 어려웠던 것 같다.
문제ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.입력첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 10
https://dojang.io/mod/page/view.php?id=2398https://infinitt.tistory.com/78https://gilu-world.tistory.com/40
https://leonkong.cc/posts/python-deque.html
시간초과가 자꾸 났다. 오름차순 정렬을 할 때 .sort()를 이용해서 정렬했고, .append()로 입력받은 수를 배열에 넣어주었다.그랬더니 났던 결과는 시간초과가 아닌 메모리 초과!메모리 초과를 어떻게 해결해야 하는지 모르겠어서 다른 분들의 코드를 참고했다.N의 범
for문 이용재귀함수import math - math.factorial(n)문제의 조건 때문에 가운데 경우에 해당됨for문 이용재귀함수import math - math.factorial(n)
비슷한 문제 https://velog.io/@letsbebrave/백준-10814번-나이순정렬
https://velog.io/@letsbebrave/백준-11650번-좌표-정렬하기
https://velog.io/@mynote/%EB%B0%B1%EC%A4%80-1158-%EC%9A%94%EC%84%B8%ED%91%B8%EC%8A%A4-%EB%AC%B8%EC%A0%9C
https://www.acmicpc.net/problem/15829
https://programmers.co.kr/learn/courses/30/lessons/12906
https://programmers.co.kr/learn/courses/30/lessons/12903
https://programmers.co.kr/learn/courses/30/lessons/87389n-1부터 2까지 하나씩 줄어드는 for문을 만들고 싶을 때for i in range(n-1, 1, -1)로 하면 1보다 큰 수인 2까지 -1되면서 줄어드는 인
https://programmers.co.kr/learn/courses/30/lessons/86491sorted(정렬할 데이터)sorted(정렬할 데이터, reverse 파라미터)sorted(정렬할 데이터, key 파라미터)sorted(정렬할 데이터, key
https://programmers.co.kr/learn/courses/30/lessons/12901a(월)이 입력되면 a 전달까지 며칠인지 그 합을 구하고, b(일)을 더한다. 그러면 1월 1일부터 총 며칠이 지났는지 알 수 있다.https://la
https://programmers.co.kr/learn/courses/30/lessons/17682다른 사람 풀이https://programmers.co.kr/learn/courses/30/lessons/17682/solution_groups?lan
https://programmers.co.kr/learn/courses/30/lessons/68644
https://programmers.co.kr/learn/courses/30/lessons/68935while n > 0:으로 맨 위의 조건식을 해주어야 무한루프할 때 시간초과에 빠지지 않을 수 있음결과값은 모두 string!int(string, 원하는 진법)
https://programmers.co.kr/learn/courses/30/lessons/77884
https://programmers.co.kr/learn/courses/30/lessons/1845?language=python3
https://programmers.co.kr/learn/challenges무슨 데이터 컬럼이 있는지 확인테이블 간 구조 확인문제의 조건들 똑바로 읽고 주석으로 표시해두기 (마지막 정렬까지!)조건 포함하고 검색 WHERE 조건 = ''SELECT ANIMAL
이름이 없는 채로 들어온 동물의 ID를 조회단, ID는 오름차순 정렬되어야IFNULL(컬럼명, NULL 시 값)해당 컬럼이 비면 뒤에 NULL 시 값을 줘서 조회해줌
이 문제는 먼제 하노이탑이 움직인 횟수를 출력하고 원반의 개수가 20개 이상이면 움직인 기둥이 어떻게 되는지 프린트 해주는 문제이다. 일단 하노이탑을 재귀로 이해하는 데에 가장 중요한 것은 재귀 함수를 하면 재귀가 다 끝나고 리턴이됐을 때 재귀함수를 호출한 곳으로 다시
문제 정답 풀이 참고한 블로그 https://0giru.tistory.com/38 (설명 매우 자세) 시간초과 풀이
재귀의 대표적인 문제
맞긴 맞았으나, 풀이가 좀 너무 길고 복잡한 측면이 있어서 global 변수 없이 재귀만으로 풀 수 있는 방법을 찾아보았다.다른 사람 풀이
https://programmers.co.kr/learn/courses/30/lessons/42746?language=python3이 문제에서 핵심은 바로 앞 자리 수가 같은 문자열(수)들을 어떻게 배열하는가이다.예를 들어 '6', '64', '600', '6
from itertools import permutations, combinationsitertools.permutations(list,n)순서를 생각해서 나열하는 것itertools.combinations(list,n)순서를 생각하지 않고 나열하는 것
함수 안에서 함수 밖의 데이터를 변경하고 싶으면 함수 안에 global 키워드를 사용해주어야 한다.(중요) 매개변수가 아닌 변수로 함수 밖에서 선언해준 값을 함수 안에서 변경하고 싶을 경우, 함수 안에서 global로 선언해줘야 한다.\-> 그래야 변수의 값을 변경 가
python 코드로 제출하면 시간초과되고 pypy로 제출하면 맞추긴 하는 코드DFS로 풀면 python으로도 제출할 수 있다고 한다!제일 이해하기 쉬웠던 코드https://data-flower.tistory.com/72
문제 풀이 다른 사람 풀이 (백트래킹)
문제 풀이
특히 소수문제 같은 경우엔 제한이 4 ≤ n ≤ 10,000 이런 식으로 걸려 있다면 수를 입력할 때마다 소수를 구할 필요가 없다.먼저 리스트의 크기를 할당해놓는 것이 중요하다.그리고 그 리스트에 (중요한 건 0부터 시작해서 나아가야 한다는 것) 소수이면 True, 소
가장 큰 정사각형을 자르고 가져간다.남은 직사각형이 정사각형이 될 때까지 자른다.구해야 할 것은 잘라서 얻어진 정사각형의 수가 몇 개인지 구하는 것!재귀가 부족해서 재귀 관련된 문제를 풀어보려고 했다. 나는 재귀를 훈련하려고 푼 거라 재귀를 이용했지만, 다른 사람들의
input()을 int가 아니라 String 타입으로 받았을 때 시간초과가 발생하지 않음!
문제 풀이
수 하나를 1, 2, 3 중에 선택하면 또 1, 2, 3 중에 수를 선택해야 함! 해당 수의 합이 되면 == 수 하나를 선택할 때마다 해당 수에서 그 수를 빼주고 나머지가 0이 되면 count를 하나 올려줘야 함!
업로드중..더이상 검색할 게 없는 경우(정확하게 잘리진 않는 경우)에 상근이는 항상 나무를 가져갈 수는 있고 절단할 수 있는 높이의 최댓값을 구해야 하므로 end를 리턴해줘야 한다.리턴값이 None이 될 수는 없기 때문이다!!!!
일단 이진탐색을 써야 하는 것은 알겠는데, 이게 n개를 선택해야 하는 카드 놓기 문제와 비슷한 측면이 있어서 (공유기 놓을 n개의 마을을 뽑기) by 재귀 & 이분탐색(거리 사이의 최댓값 구하기)무언가 이렇게 되는 구조인 것 같은데, 이분탐색을 어느 방식으로 써야하는지
문제 막힌 부분 이진탐색을 도대체 어디서 써줘야 할 지를 모르겠다. 그냥 그 자!체!를 모르겠다!!!!!!! 용액 특성값 리스트에서 2개씩 골라서 합을 구한 다음, 그 합을 가지고 이진탐색을 해줘야 하는지..? 잘 모르겠다. 나눠줘야 하는 경우의 수 공유기 설치
생각해봤던 부분은 캐릭터를 각각 카드(총 N개의 카드)라고 생각하고, 올릴 수 있는 레벨의 총 합인 K를 카드를 선택 가능한 횟수라고 보는 것이다.예를 들어, N이 3이고 K를 10이라고 본다면, 캐릭터의 레벨이 각각 10, 20, 15라고 했을 때 10 1520이라는
문제 풀이
문제 풀이
문제 https://www.acmicpc.net/problem/8983 첫번째 풀이 23점 부분점수 받음 막힌 부분 사대를 기준으로 잡지않고, 동물을 기준으로 잡을 수 있는 사대가 범위 내에 존재하는지 확인하는 것까진 힌트를 봐서 알겠다. 그런데, 이분탐색을 어
https://www.acmicpc.net/problem/2630처음에 흰색으로만 되어 있는 조건을 nn으로 안하고 n으로 해줬었는데, 어떻게 잘 발견해서 nn으로 잘 고쳐줬다!!!처음부터 끝까지 스스로 푼 문제!! 기특 😂😂
문제 풀이
https://velog.io/@ledcost/백준-10830-파이썬-행렬-제곱-골드4-분할-정복이 분의 코드를 참고했다.행렬의 거듭 제곱 문제이므로, 알고리즘으로 거듭제곱을 구현하기 위해서는 자연수의 거듭 제곱 풀이인 https://www.acmi
제대로 된 괄호 문자열인지 판별하는 건 괜찮았지만, 계산하는 게 너무 어려웠다. tmp에 1을 주고(곱했을 때 숫자가 살아있게 하기 위해서) 열린 괄호를 만날 때마다 2나 3을 곱해주고 stack이란 배열에 넣어준다. (배열에 넣어주는 이유는 짝이 맞는지 안 맞는지 찾
문제 풀이
문제 시간초과 풀이
참고 블로그https://kyoung-jnn.tistory.com/entry/%EB%B0%B1%EC%A4%802812%EB%B2%88%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-%ED%81%AC%EA%B2%8C-%EB%A7%8C%EB%93%A4
처음으로 스스로 푼 골드 문제!!!! 그 문제의 이름이 뱀이라니 너무 웃기다 ㅎㅎ잘 짰다고 생각했는데 문제에 내가 놓친 부분이 있나 싶어 다시 문제를 읽어보니, 다음과 같이 쓰여 있었다.만약 이동한 칸에 사과가 있다면, "그 칸에 있던 사과가 없어지고" 꼬리는 움직이지
문제 풀이
왼쪽 힙은 최대 힙으로 정렬하고, 오른쪽 힙은 최소 힙으로 정렬하면왼쪽 힙의 첫번째 요소는 항상 중앙값이 된다.이때 왼쪽 힙의 첫번째 요소는 최대 힙에서 가장 큰 값이다.마찬가지로 오른쪽 힙의 첫번째 요소는 최소 힙에서 가장 작은 값!1-1. leftheap과 righ
최소한의 비교를 하려면, 최소 값이 최대한 많이 더해져야 한다고 생각해서 계속 앞에서 더한 sum 값을 가지고 뒤에 pop한 작은 수와 더해줘야 한다고 생각했다.내가 앞에서도 써놨듯이, 최소인 값을 최대한 더 많이 더하는 게 중요한데, 남아 있는 수들보다 sum한 값이
문제 풀이
문제 풀이
https://www.acmicpc.net/problem/2512cf.유사 문제 : 히오스 프로그래머 https://velog.io/@letsbebrave/백준-16564-히오스-프로그래머
문제 풀이
해당 문제를 풀진 못했다.기록 차원에서 내가 이해한 바를 남겨둔다..
https://www.acmicpc.net/problem/19921사분면, 2사분면, 3사분면, 4사분면을 갈라서 재귀를 한 번 돌 때 ()가 한 번 생기므로
https://www.acmicpc.net/problem/9935문자열의 앞에서부터 스택에 넣으면서 타겟의 마지막 값과 현재 리스트의 값이 같으면 타겟의 문자열 길이만큼 스택에서 슬라이싱을 한 것을 타겟과 같은지 비교하고 타겟의 길이만큼 pop()을 해주는 로
https://www.acmicpc.net/problem/1991
문제 https://www.acmicpc.net/problem/5639 이진검색트리 각 노드의 왼쪽 서브트리에는 해당 노드의 값보다 작은 값을 지닌 노드들로 이루어져 있다. 각 노드의 오른쪽 서브트리에는 해당 노드의 값보다 큰 값을 지닌 노드들로 이루어져 있다. 중
https://www.acmicpc.net/problem/1197
https://www.acmicpc.net/problem/1260
https://www.acmicpc.net/problem/11724
문제 https://www.acmicpc.net/problem/1707 참고한 풀이 https://hongcoding.tistory.com/20 막혔던 부분 이분 그래프에서 가장 핵심적인 부분은 서로 인접한 정점이 같은 색이면 이분 그래프가 아니라는 것이었는데, 인
https://www.acmicpc.net/problem/21606
https://www.acmicpc.net/problem/2178이동할 네 가지 방향 정의덱 생성while queue: 현재 위치에서 4가지 방향으로 위치 확인 위치가 범위 안에 있는지 조건 확인 모든 조건이 통과되고 해당 값이 1이면 이동 가능 이동해
https://www.acmicpc.net/problem/2573PyPy로 푸니까 맞았다.Python3로 하면 시간초과가 나서 그 부분을 리팩토링하면 좋을 것 같다.
https://www.acmicpc.net/problem/2665BFS와 heap을 사용해서 계속 내가 동서남북으로 이동할 수 있는 좌표 중 최소 비용(벽을 뚫는 횟수)을 가지는 좌표로만 이동하게 하는 것이 핵심!그때 이미 while heap: 안에서 계속 최
https://www.acmicpc.net/problem/75691인 노드들을 어떻게 한번에 가져가서 동서남북상하를 봐줘야 하는 건지 고민했음\-> 처음에 입력받았을 때 1인 것의 좌표를 넣는 리스트에 1 값을 가진 것들의 좌표를 모두 넣어줌!그리고 bfs가
https://www.acmicpc.net/problem/75691인 노드들을 어떻게 한번에 가져가서 동서남북상하를 봐줘야 하는 건지 고민했음\-> 처음에 입력받았을 때 1인 것의 좌표를 넣는 리스트에 1 값을 가진 것들의 좌표를 모두 넣어줌!그리고 bfs가
https://www.acmicpc.net/problem/2294왜 while문 bfs에 들어가기 전에 for문으로 queue에 coins들 중 k보다 작거나 같은 값들을 append해주는가?\-> 어차피 들어가는 동전의 개수는 하나씩 올려가면서 돌기 때문에
https://www.acmicpc.net/problem/3055
문제 https://www.acmicpc.net/problem/2637 풀이 참고 블로그 https://campkim.tistory.com/10
https://www.acmicpc.net/problem/2617
https://www.acmicpc.net/problem/1707
https://www.acmicpc.net/problem/21606 현재 노드가 실내인지 실외인지 파악해주는 게 핵심! 이 문제에서 핵심적인 부분은 실내 - 실내인 경우엔 dfs가 필요치 않고 실내가 실외를 만났을 경우 dfs 탐색을 해서 실외에 근접한
https://www.acmicpc.net/problem/9251https://www.youtube.com/watch?v=EAXDUxVYquY&ab_channel=Chan-SuShin해 분석. 부분제로 분할부분제의 해 -> 큰 문제의 해로 표현 (점화
https://www.acmicpc.net/problem/9084
https://www.acmicpc.net/problem/11049대각선을 타고 하나씩 내려가야 하는 구현이 어려워서 직접 손으로 써보았다.동영상 강의https://www.youtube.com/watch?v=u1gIkGXUqBQ풀이https:
https://www.acmicpc.net/problem/11053dp 테이블엔 해당 숫자 이전의 숫자들과 함께 만들 수 있는 최장 부분수열의 길이를 숫자별로 넣어준다.대소비교를 하여 현재숫자 > 이전숫자(for문을 돌림)이면 dp\[i] = max(dp\[i
https://www.acmicpc.net/problem/12865
https://www.acmicpc.net/problem/2579
큰 문제를 작은 문제로 나누어 푸는 문제를 일컬음.제한 사항에 주어지는 숫자 범위가 크고 경우의 수가 엄청난 값의 문제들이 대부분 DP를 이용해서 풀어야 하는 것.ex. 배낭에 넣을 수 있는 물건들의 가치합의 최대값을 구하라면 https://velog.io/@
https://programmers.co.kr/learn/courses/30/lessons/42747처음엔 citation 인용 횟수만 고려하여 코드를 짰으나, 이렇게 하면 중간에 있는 값들을 고려해줄 수 없다. 예를 들어,20, 19, 18, 1 의 인용 횟
https://programmers.co.kr/learn/courses/30/lessons/42840?language=python325분 소요반복문 사용 시 몇 번째 반복문인지 확인이 필요할 수 있다. 이때, 인덱스 번호와 컬렉션의 원소를 tuple형태로 반환
https://programmers.co.kr/learn/courses/30/lessons/42576데이터의 개수가 많은 순으로 정렬된 배열을 리턴하는 most_common( )이라는 메서드인자 k 값을 넣으면 그 숫자만큼만 리턴하므로, 가장 개수가 많은 k개
https://programmers.co.kr/learn/courses/30/lessons/42579
https://programmers.co.kr/learn/courses/30/lessons/43165https://juhi.tistory.com/6https://velog.io/@ju_h2/Python-프로그래머스-level2-타겟넘버-BFS
풀이
https://www.acmicpc.net/problem/2606
https://programmers.co.kr/learn/courses/30/lessons/43164
https://www.acmicpc.net/problem/8595isdigit() 함수는 특정 문자열의 모든 문자가 숫자인지 확인하는 데 사용됩니다. 모든 문자가 숫자인 경우 True 값을 반환합니다. for i in tmp::-1:
문제링크 https://www.acmicpc.net/problem/1963 소수 구하는 법 정리 특정 수가 소수인지 판별
https://www.acmicpc.net/problem/14502
product(반복가능한 객체, repeat = 수)https://school.programmers.co.kr/learn/courses/30/lessons/84512
https://school.programmers.co.kr/learn/courses/15008/lessons/121684
큰 문제를 작게 나누고, 같은 문제라면 한 번씩만 풀어 문제를 효율적으로 해결하는 알고리즘시간복잡도를 계산해봤을 때 어마어마하게 많은 시간복잡도가 걸리면 대개 Dynamic Programming으로 해결하거나 다른 방법으로 풀어봐야 함반드시 문제를 풀기 전에 완탐 시간