.
문제 내가 짠 코드 저장 실패 풀이 2진수로 바꾼다. 배열을 뒤집어서, 1인 인덱스만 배열에 추가한다. 효율적인 코드 피드백 리스트를 역순으로 사용해야 할 때, 정렬하지 않고 '-i-1'로 사용하면 효율적 배운 지식
없음N = int(input())arr = list(map(int, input().split()))print(min(arr), max(arr))주피터로 코딩하던 중, min() 함수에서 에러가 발생했다. 검색해보니 이전에 사용한 변수명 때문에 오류가 난다고 한다. 그럴
효율적인 코드
문자열을 아스키 코드로 변환리스트 역순으로 정렬아스키 코드를 문자열로 변환병합문자열은 정렬이 안되는줄 알았는데, 된다.
문제2차원 리스트 선언for문을 사용하여 리스트에 입력받음.각 역의 승객수를 answer에 추가최대값 출력리스트에 입력값을 담고 다시 answer에 담지 않고, 바로 num을 계산해서 answer에 담으면 된다.
문제문제에 나온 절차대로 진행함len(answer)=0 을 answer='' 라고 바뀐 것과, answer0:15를 answer:15 로 바뀐 것을 제외하면 없음그동안은 배열을 만들어서 문자를 append 시켜줬는데, 그냥 바로 문자열 만들어서 하나씩 더하는게 효과적이
while문 이용해서, 숫자를 3으로 계속 나눠서 최대 지수를 구한다.숫자를 3에 최대 지수 승으로 나눠서 3진수를 구하고, 나머지로 계속 나눠준다. 3진수를 배열에 추가한다.배열을 순서대로 3의 0승부터 곱한다. (그럼 자동으로 역순으로 계산된다) 계속 더해준다.
각 배열을 10000개만큼 늘려준다.for문을 사용해서 각 배열과 answers를 비교하고, 일치하는 값을 가진 사람에게 1씩 증가시켜준다.max 값을 구한다. (바로 max 인덱스를 추출하지 않은 것은, max 함수는 하나만 반환하기 때문에 동점자를 모두 추출할 수
문제
문제for문을 사용하여 배열에 숫자 9개를 입력한다.while을 사용해 리스트 합이 될 때까지, while문을 사용해 랜덤으로 리스트에서 7개를 뽑아서 리스트 합을 구한다.리스트를 정렬하고, 차례대로 출력한다.더 효율적인지는 잘 모르겠다.이중 for문을 사용해서, 합에
문제
문제a와 b를 비교해 큰 수를 a로 지정한다.for문을 사용하여, 약수를 maxx라고 지정한다. 결국 가장 큰 약수가 저장된다.최소공배수 구하는 공식은 '두 수의 합 / 최대공약수' 이다.최대공약수는 재귀함수와 유클리드 호제법을 이용하면 간단하다.재귀함수 로직
문제리스트 개수 n을 입력받는다.n번 for문을 돌려서, 리스트를 입력받고, 정렬하고, 뒤에서 3번째 인덱스를 출력한다.'''
문제 실패개수와 리스트 입력소수 판별 함수 제작 (안돌아가는거 보니 잘못짠듯)리스트 원소를 for문 돌려서 소수면 count 추가한다.개수 return소수 구하는 코드는 그냥 로직을 외워야겠다.배운 것
문제 실패(없음)try, except 문을 사용하면 된다.예외 처리를 하려면 try에 실행할 코드를 넣고 except에 예외가 발생했을 때 처리하는 코드를 넣는다. 횟수가 정해지지 않은 입력을 처리할 때 사용한다.
문제2중 for문 돌려서 arr에 숫자들을 추가한다.break를 사용해서 효율성을 높였다.a와 b 사이의 합 출력i번 곱해서 더하는 것을 생각은 했지만 구현하지 못했는데, 적용하니 for문을 하나 줄일 수 있었다.
문제소수 판별 함수를 만듬for문을 돌려서 소수면 인덱스 추가값 출력없음함수를 만들어 쓰는 것과, for문 안에서 판독해서 쓰는 것 중 뭐가 더 효율적인지는 모르겠다.
문제소수 판별 함수를 만든다.combinations 함수를 사용해서 합을 arr에 넣어준다.소수면 카운트 한다.3중 for문을 써서 모든 조합의 합을 구하려고 했는데, itertools 라이브러리의 combination 함수를 쓰면 편리하다. (for문을 써도 돌아가는
문제소수 판별 함수 작성for문을 사용하여 모든 자리수를 만들수 있게 하고, 그 안의 for문에서 permutation을 사용해 순서를 포함한 '순열'을 리스트에 추가한다.set을 사용하여 중복을 제거한다.소수 개수를 출력코드가 너무 많고, 내 코드도 복잡하진 않아보여
문제list comprehension을 사용하여 record를 띄어쓰기 단위로 분리한다.안내문 출력을 위해, 아이디와 안내문구를 2차원 리스트로 추가한다. (change는 필요 없으므로 if-elif 문을 사용하여 걸러냈다.)닉네임 변경을 반영하기 위해, for문을 거
문제공백을 기준으로 문자열을 리스트로 변경문자형을 정수형으로 변경최댓값과 최솟값 리턴split의 default 값은 공백이다.자료형 변경과 split은 같이하자
문제0,1 리스트 선언for문을 이용해 두 수의 합을 리스트에 추가한다.나머지 값을 리턴
문제while문을 돌려서, 3의 k승으로 나누어서 자릿수를 구한다.for문을 돌려서, 리스트에 3으로 나눈 수를 추가한다.while문을 돌려서, 리스트에 0이 없을 때까지 0을 다른 수로 바꿔준다.for문을 돌려서, 3을 4로 바꿔주고, 하나씩 문자열에 추가한다.배운
문제 실패 (오류 발견 실패)def solution(s): s = list(s)문자열을 리스트로 바꿔준다.for문을 돌린다.1) 전 인덱스가 공백이거나 첫 인덱스면, 알파벳일 경우 대문자로 바꿔준다.2) 아니라면, 알파벳일 경우 소무나로 바꿔준다.합친다.처음엔 공
문제for문을 1부터 n까지 돌린다.for문을 이용하여, sum이 n 이상이 될 때까지 j를 더한다.sum과 n이 같으면 cnt를 1씩 늘려준다.cnt 반환원리는 똑같지만, for문과 if문을 while문 하나로 줄일 수 있다.
문제for문을 돌린다.1) 이전까지의 리스트에 해당 단어가 존재하면 사람과 차례를 answer에 추가하고 반복문을 끝낸다.2) 이전 단어의 마지막과 해당 단어의 처음이 다르면 사람과 차례를 answer에 추가하고 반복문을 끝낸다.모두 정답이면 answer를 임의로 0,
문제(https://programmers.co.kr/learn/courses/30/lessons/49993skill 문자열을 하나하나 리스트로 분리for문a) skill_tree에 있는 문자열을 하나하나 리스트로 분리b) skill 안에 있는 skill_tre
문제while문a) s의 1 개수를 구한다.b) 1의 개수(10진수)를 2진수(s)로 바꾼다.c) s의 길이에서 1의 개수를 뺀 값이 0이다. 이 값을 zeros에 더해준다.d) 횟수를 +1 해준다.e) s가 1이 될 때까지 반복한다.횟수와 0의 개수를 반환한다.효율적
문제 실패strr = str(input()).strip()strr = strr.split(" ")if strr == '': print(0)else: print(len(strr))공백이 입력됐을 때 결과값이 1로 출력되는 것을 고려하지 못했다.
문제N(개수) 입력받기for문a) 단어 입력받기b) 단어 단위로 분할c) for문 1) 단어가 공백이 아닌지, 첫글자가 알파벳인지, 첫글자가 이미 arr에 있는지 확인 2) 첫글자를 arr에 추가 3) 첫글자에 \[]을 감싸줌 4) 출력, 탈출d) el
문제str1과 str2를 각각 for문을 돌린다.a) 2개로 쪼갠 문자열이 알파벳으로 이루어져 있으면, 소문자로 변환해서 arr에 추가한다.union에 arr1과 arr2를 더해준다.arr1을 for문을 돌린다.a) arr2 안에 있는 원소면 inter에 추가해주고,
문제문제를 꼼꼼하게 읽자
문제TO_CHAR(칼럼명, 'format') : 칼럼 데이터를 format 형태로 바꿔줌
문제
문제
문제10000개 반복문자릿수를 문자열로 쪼갠다.원래 수 + 자리수배열에 추가배열에 없는 수면, answer 배열에 추가
문제연속되는 문자를 하나로 합쳐준다. (ex. aabbcc --> abc)한 번 나온 문자가 또 나오면 그룹 단어가 아니다.
문제크로아티아 알파벳이 문자열에 존재할 때까지 while문을 돌린다.알파벳이 있으면 num을 1씩 추가하고, 문자열에서 알파벳을 \*로 바꿔준다.(알파벳을 삭제하면 문자열이 합쳐져서 다른 알파벳으로 인식할 수도 있다)반복문이 끝나면 \*을 지워준다.문자열의 길이를 반환
문제문자열 분리정렬합침리스트에서 문자열도 숫자 정렬이 된다.
문제중복된 데이터가 아니면, answer에 길이와 데이터를 추가정렬람다를 사용하면 2차원 배열을 사용하지 않고 풀 수 있다.람다로 조건 여러개를 지정해서 정렬할 수 있다. (여기서는 길이 --> 순서)
문제두 수의 곱을 최대공약수로 나눠준다.
문제리스트 정렬리스트의 첫번째 값과 마지막 값을 곱한다.(n을 구하기 위해서는 약수 중 1과 n을 제외한 첫번째와 마지막 값을 곱하면 된다.)
문제문자열을 리스트로 쪼갠다.반복문을 돌려서, 숫자에 맞는 인덱스에 1씩 더해준다.인덱스6을 2로 나눠준다. (홀수와 짝수에 따라 처리방법이 다르다)리스트의 최대값을 출력한다. (최대값만큼 세트가 필요하기 때문)굳이 문자열을 리스트로 나누지 않고, 문자열에서 바로 인덱
실버4 문제while문 반복해서, 반복 전/후 길이 비교해서 같으면 종료 (같으면 더이상 괄호가 없다는 뜻)replace 함수를 써서 '()'를 제거한다.길이가 0이면 yes, 1이면 no를 출력한다.
실버4 문제alist의 최솟값과 blist의 최댓값을 뽑아서, 각 리스트에서 삭제한다.최솟값과 최댓값을 S에 더한다.
실버5 문제입력받은 숫자와 숫자의 인덱스(+1)를 2차원 리스트로 answer에 추가answer를 정렬하고, 슬라이싱하여 최대값 5개만 남김합을 구함인덱스 출력1차원 리스트로 풀어서, for문을 하나 덜 사용했다.다 쓴 최댓값은 0으로 변경해서, 다음 최댓값을 쓸 수
실버4 문제값을 입력받고, 해당 리스트에 index 값을 추가한다.나이, index 값 순으로 정렬한다.하나씩 출력한다.sys를 사용하니 시간이 1/10로 줄었다...나이가 같으면 들어온 순서대로 정렬하고 싶어서 index 값을 따로 정렬에 이용했지만, lambda를
실버5 문제리스트 정렬 (첫번째 인덱스 --> 두번째 인덱스 순서)출력
실버3 문제리스트 정렬인덱스별 합을 새로운 리스트에 추가리스트 합 출력
실버4 문제입력값이 0이 아니면 리스트에 추가입력값이 0이면 마지막 값 삭제리스트가 null이면 아무것도 안함사람들 코드를 보면 리스트가 null일때 0이 들어오면 별다른 조치를 취하진 않는데 문제 자체가 그런 상황이 발생하지 않는건지 모르겠다?
실버3 문제1부터 n까지의 리스트 생성product 함수를 사용해서 m개의 리스트 조합을 생성 (순서O, 중복O)출력\*을 사용하여 출력하면 리스트에서 괄호를 빼고 출력할 수 있다.다른사람들의 풀이를 보니까, 패키지를 안쓰고 다른 알고리즘을 사용하여 풀었다.
실버3 문제1부터 n까지의 리스트 생성permutations 함수를 사용해서 m개의 리스트 조합을 생성 (순서O, 중복X)출력
실버3 문제1부터 n까지의 리스트 생성combinations 함수를 사용해서 m개의 리스트 조합을 생성 (순서X, 중복X)출력
실버3 문제1부터 n까지의 리스트 생성combinations_with_replacement 함수를 사용해서 m개의 리스트 조합을 생성 (순서X, 중복O)출력
실버5 문제리스트 정렬 (두번째 인덱스 --> 첫번째 인덱스 순서)출력
실버5 문제리스트 입력두번째 인덱스 기준으로 정렬첫번째 인덱스의 첫번째 인덱스 출력
레벨1 문제리스트 컴프리헨션에 else를 쓰려면 for 앞에 써야한다.
레벨2 (실패) 문제최대 2명까지 탑승할 수 있다는 것을 안 보고 문제를 풀었다...리스트를 오름차순으로 정렬하고, 정원이 초과되거나 무게가 초과되면 다음 보트에 태우는 로직을 생각했었는데 되지 않았다. 계속 고민하다가 결국 구글링을 했다.
실버3 문제arr0과 arr1 값 지정0의 개수와 1의 개수를 더해준다.피보나치 수열 함수를 만들고, 반환값에서 0과 1의 개수의 합을 추출하려고 했는데 시간 초과가 떴다. 그래서 동적 분할법(저장)을 사용했다.
브론즈1 문제n이 1, 2, 4, 7 중 하나면 -1 출력하고 끝n이 3, 6, 9, 12 중 하나면 n을 3으로 나눈 몫을 출력하고 끝n을 5로 나눈 나머지에 따라 if문을 수행answer 출력어떻게 풀어야 할지 몰라서 노가다로 풀었는데 구글링을 해보니 다양한 풀이방
브론즈2 문제벌집의 로직은 계차수열이다. ( 2 + ∑ (6 x K) )계차수열을 거꾸로 계산해서 몫을 구했다.몫의 수의 따라 계차수열이다. ( ∑K )(풀었지만 설명을 못하겠다)바퀴수를 1씩 증가시키면서, 바퀴만큼의 수를 제거한다.해당 숫자가 나오면, while문을
브론즈1 문제while문을 돌려서, h(높이)가 v 이상이 될 때까지 반복한다.낮에 정상에 오르면 끝이 나므로, 더하기와 빼기 사이에 if문을 배치했다.하지만 이렇게 할 경우, 숫자 매우 클 때 시간초과가 발생해서 통과되지 않았다.공식 : (a - b)n + a >=
레벨2 문제100에서 해당 작업의 진도를 빼고, 그것을 작업속도로 나눈다. 이것을 speeds에 곱해서 progresses에 더해준다.while문을 돌려서 progress가 100 이상일 때까지 계속 삭제해주고, 삭제한 만큼 cnt를 증가시킨다. while문이 끝나면
레벨2 문제나중에 작성
레벨2 문제스택/큐 는 어떻게 풀어야할지 생각이 안나서 2중 for문으로 풀었는데 효율성테스트를 통과해서 놀랐다.전체 데이터에 대해 for문을 돌린다.해당 데이터부터 for문을 한번 더 돌려서, 해당 데이터 이하이면 cnt에 1을 더해준다. 아니면 반복문을 종료한다.c
레벨1 문제arr 배열을 만든다.arr에 대한 for문을 돌려서, 해당 단어가 문자열 안에 있으면 바꿔준다.s를 int 자료형으로 반환replace를 쓰면 맨 앞에 있는 것만 바뀌는 것이 아니라, 문자열 안에 있는 모든 것이 바뀐다.
그리디 (96)입력받은 리스트의 최소값을 arr list에 추가arr list의 최대값 출력로직은 비슷하지만, 리스트를 사용하지 않고 max 함수만 사용해서 더 효율적이다.
그리디 (99)n을 k로 나눈 나머지가 0이라면, 나눠주고 i에 1을 더해준다.나머지가 0이 아니라면, 1을 빼주고 i에 1을 더해준다.n이 1이 될때까지 반복한다.i 출력
구현 (110)입력값을 arr 리스트로 받는다.location을 1, 1로 설정한다.arr 만큼 for문을 돌려서 LRUD에 따라 1씩 이동시켜준다. (if문을 이용하여, 좌표 밖으로 나갈 경우 다시 안으로 넣어준다.)마지막 위치를 출력한다.2차원 배열은 함수와 x,
구현 (113)직접 3이 들어가는 경우의 수를 계산하여, 이에 맞춰서 코드를 작성했다. (노가다)3중 for문을 사용하여 풀었다. 복잡하게 경우의 수를 고려하지 않아도 된다는 장점이 있지만, 시간 복잡도는 클 것 같다.
구현 (115)코드를 만들기 전에 모든 경우의 수를 고려하고, 이를 바탕으로 코드를 짰다. (노가다)피드백
구현 (118)d에 방향에 따라 4가지 if문을 쓰지말고, arr을 통째로 회전시키면 어떨까 생각
DFS (149) 실패어렵다...
BFS (152) 실패경로가 하나밖에 없는 (무조건 탈출할 수 있는) 그래프가 주어진다고 했는데 문제를 제대로 읽지 않았다...
실버3 문제우선순위와 인덱스를 나타낸 2차원 배열을 만들었다.for문을 돌려서 (비효율적이라 다른 방법을 쓰는게 좋을듯) 최대값을 찾아내고, 최댓값이면 삭제하고 아니면 맨 뒤로 보낸다. 해당 값의 인덱스가 m이면 cnt를 출력하고 끝낸다.내일 작성 예정https
정렬 (182)k번, a의 최소값과 b의 최대값을 바꿈(무조건 바꿔서 틀린 코드)a와 b를 정렬해서, 첫번째 인덱스부터 차례대로 비교하여 변경a가 더 크면, 반복문을 종료한다.
실버4 문제m에서 리스트에 첫번째 값을 뺀 값이 있으면, 두 값을 제거하고 cnt에 1을 더해준다.없으면 첫번째 값만 제거한다리스트의 길이가 2 미만이 되면 반복문을 끝낸다.투 포인터를 사용했다.두 값이 m과 같으면 cnt를 증가시키고, 두 포인터 모두 증가시킨다.두
201 (실패)이진 탐색으로 풀었지만, 범위 설정을 잘못해서 돌아가지 않는 코드이다.result에 값을 저장해두고, 자르는 길이를 늘렸을 때 맞지 않으면 그 값을 반환한다.
217 실패낮은 수부터 차례대로 계산해서 최소값을 해당 값으로 저장
실버4 문제(그냥 아무렇게나 구현해서 풀었다)1\. 리스트가 남아있을 때까지 while 반복문을 돌린다.2\. for문을 k번 만큼 돌린다. \- cnt를 1씩 추가시켜주는데, i가 k면 해당 인덱스 숫자를 answer에 추가하고 리스트에서 삭제한다.피드백
실버4 문제리스트에 받아서 정렬target과 answer을 첫번째 책 이름으로 지정for문을 돌려서현재값이 이전값과 같으면 cnt를 추가한다.다르다면 cnt를 0으로 초기화하고, target을 새로 설정한다.cnt가 최대값(imax)보다 크다면, imax를 새로 설정하
320 리스트 오름차순 정렬첫번째 값을 기준으로 임시 리스트를 만든다.리스트 길이가 리스트 최대값 이상이면, cnt를 증가시키고 리스트를 새롭게 정의한다.아니라면 반복문을 종료한다.정답 풀이는 이해가 안돼서 스킵
321 (브론즈2)반으로 나누고, 합을 구해서 비교322알파벳과 숫자를 분리한다.알파벳 리스트는 정렬하고, 숫자는 합을 구한다.합쳐준다.323
359 (실버4) 문제람다 써서 정렬360 (실버3) 문제로직
367해당 수의 마지막 인덱스에서 첫번째 인덱스를 빼준다.368369
3752차원 배열을 재배치해서 밑으로 내려갈 수 있게 했다.가장 큰 값을 찾아 내려간다. (위치에 따라 인덱스 조정)376 (실버1) 문제로직
340 (실버2) 실패 문제<16>
실버2 문제정석대로 풀었다. 그래프 입력 방법을 바꿔야할 것 같다.
실버5 (실패) 문제오랫동안 못풀었던 문제인데 너무 어렵게 생각했던 것 같다. 그냥 이중 for문 돌리니까 바로 끝났다...
실버3 문제bfs 사용 (2차원 배열 이용)
실버2 문제dfs 사용재귀 에러가 떠서, sys.setrecursionlimit(10000) 를 사용했다.함수 4개를 사용했다.
레벨2 문제최소 힙 사용min(arr) 보다 arr0 사용하는 것이 시간복잡도가 더 작다.
실버2 문제평범한 dfs 문제다. 다만 대각선을 고려해야 해서 8방향으로 탐색했다.
레벨2 문제스택 자료구조
레벨2 문제나도 내가 어떻게 풀었는지 모르겠다.
레벨2 문제 (못품)굳이 arr2를 뒤집어주는 작업 할 필요 없이, 반복문 돌리면서 인덱스만 뒤집어주면 됨
레벨2 문제스텍 자료구조 사용
레벨1 문제시키는대로 풀었다.문자열을 하나하나 세부적으로 풀었다.
레벨2 문제 실패'#' 붙어있는 문자들은 소문자로 바꿔주기...
레벨2 문제 실패bfs
레벨2 문제콤비네이션, 딕셔너리 사용
레벨2 문제 실패str 자료형 상태로 정렬하면, 접두어가 포함된 단어는 해당 접두어 앞에 위치하게 된다.
레벨2 문제 실패딕셔너리에 카테고리 별로 분류횟수 세기수는 못 구했지만, 딕셔너리를 능숙하게 사용하여 분류하는 것은 성공했다.
레벨2 문제스텍 자료구조 이용
레벨2 문제 실패x\*3 을 하면 x가 3번 반복하게 되고, 이 상태에서 문자열이 ASCII 값으로 치환되어 비교된다고 한다.마지막에 int와 str을 써준건 000 같은 케이스들을 없애기 위해서 그렇다.
레벨2 문제 실패기타 정렬기준들이 모두 같다면, 기존 인덱스 순서에 따라 정렬됨 (인덱스 순서로 정렬이 필요해도 굳이 인덱스를 사용해서 정렬할 필요가 없음)lambda 괄호 안에 upper, int 등 사용 가능
레벨2 문제 실패음... 그리디 어렵다
레벨2 문제리스트로 바꿔주고, Counter 쓰고 정렬해주면 끝!딕셔너리 정렬하는 방법이 조금 까다롭다. 외워야할듯
레벨2 문제 실패정확성은 맞았으나 효율성에서 틀렸다.다른 사람의 풀이를 봤지만 너무 길고 어려워서 포기했다. (다음에 시간 여유가 되면 다시 보기로)
레벨2 문제 실패n보다 큰 숫자부터 for문 돌려서, 2진수의 1 개수가 같은 숫자 리턴하면 된다...
레벨2 문제이분탐색마지막 테스트케이스가 통과되지 않았는데, answer 값 정의를 안해줘서 그런거였다. 실패했을 경우 반환값이 없었기 때문에 0으로 지정해줬다. 어차피 for문 돌면서 answer는 증가할 것이기에.
레벨2 문제 실패풀이를 봐도 이해가 안된다. 이해하려면 오래걸릴것 같으니까 나중에 봐야겠다.
레벨2 문제 실패나중에...
레벨2 문제yellow의 먼저 약수를 구한다.약수를 바탕으로 brwon의 격자 개수를 비교한다.
레벨1 문제구현, 람다 정렬
레벨2 문제 실패다리 길이만큼 0을 채워준다.
레벨2 문제 실패문제 그대로 풀면 되긴 하는데... 말이 이해가 잘 안됐다.
레벨2 문제 실패집합 사용집합은 순서 구분이 없지만, 집합 안 괄호는 순서 구분이 있다. 한참 해맴
실버1 문제 실패힙에 절대값과 원래값을 같이 넣어준다.힙에 여러개 넣어도 됨힙은 첫번째 값을 기준으로 정렬된다.try, except 문법 공부 필요
레벨2 문제 실패BFS
레벨1 문제노가다 했다. 효율성은 문제 자체가 노가다라 걸리지는 않겠지만, 더 효율적이고 간단한 코드를 구현하고 싶다.피드백
실버4 문제교집합 사용 (이분탐색으로 하다가 안돼서 바꿨다)
실버3 문제누적 합 리스트를 미리 만들고, 인덱스를 이용해서 빼준다.누적 합을 구하기 위해 for문을 사용하면 시간초과가 발생할줄 알았는데, 잘 돌아간다.
실버5 문제100 x 100 2차원 배열을 만들어서 1로 바꿔주면 된다.시간초과 날 줄 알았는데 잘 돌아간다.
레벨2 문제 DFS/BFSBFS
실버3 문제백트래킹 (실패)
레벨2 문제
골드5 문제시뮬레이션문제에서 시킨대로 했다.사과를 먹었으면 1에서 0으로 바꿔줘야 했는데, 놓쳤다.뱀의 몸이 서로 부딪히면 종료해야 하는데, 뱀의 머리와 꼬리에만 집착했다.
실버1 문제DFS/BFS리스트 얕은 복사...
레벨3 문제(https://programmers.co.kr/learn/courses/30/lessons/42579해시합계 딕셔너리와 재생횟수, 인덱스 딕셔너리를 따로 만들어줬다.딕셔너리 정렬...
실버1 문제BFSBFS집이 하나만 있는 단지를 고려하지 않고 구현했었다.
레벨2 문제로직
레벨2 문제재귀 / 실패아직 멀었다...참고
레벨3 문제DPDP + 메모이제이션0은 1, 물웅덩이는 -1, 나머지 좌표는 0으로 지정나머지 법칙? 공부(숙지) 필요
레벨3 문제그리디노드 방문했는지 확인하는 리스트덩어리와 연결되어있는 엣지 정보가 들어있는 리스트 (힙)1번 노드에서 시작해서, 가장 짧은 edge로 이동함새로 방문한 노드는 체크해줌덩어리와 새롭게 연결된 엣지는 추가해줌queue에 리스트를 넣었는데, 우선순위 queue
실버3 문제투 포인터투 포인터
실버3 문제 실패이분탐색 or 투 포인터정렬중간으로 인덱스를 하나씩 좁힘left와 right가 같아지면 끝
레벨3 문제힙시간 0부터 시작시간이 흘러감에 따라 함수 진행 (while문 써야할듯)요청 리스트가 텅 비면 함수 종료해당 시간에 들어와있는 요청 리스트 필요 (queue)소요시간 리스트 필요'입출력 예'의 리스트는 정렬되어 있어서 그렇게 알고 풀었는데, 테스트케이스는
문제 레벨1리스트에서 원소를 지울때 remove를 쓸때, 같은 값이 있다면 앞의 값을 지우므로, 첫번째 원소가 아닌 다른 원소를 지우고 싶다면 del로 인덱스를 지울 것!