처음 i를 변수로 가지는 for문을 작성하고 j를 변수로 가지는 for문을 하나 더 작성하여 이중 반복문을 작성합니다.그 후 pricesi를 기준으로 i+1 인덱스부터 끝 인덱스까지를 pricesj에 넣어 비교합니다.pricesi <= pricesj이면 기준에 비
progresses 가 0이 아닐때까지 while 반복문을 사용해준다. 이때 (progresses0 + time\* speeds0) >= 100 를 만족하면 큐의 개념인 FIFO대로 progresses의 0번째 인덱스와 speeds의 0번째 인덱스를 pop해주고 cou
전형적인 큐에 관한 문제(FIFO)이므로 0 이 bridge_length 만큼 있는 q 리스트 변수를 선언하고 q가 존재하는 동안 while문을 돌려 문제에 나온대로 한 사이클을 돌릴때마다 time에 +1을 해주면 된다. 먼저 q의 맨앞을 pop 해주고 truck_we
동적프로그래밍을 사용하는 문제로 맨 앞의 스티커를 사용한다고 가정하는 dp변수를 선언해준다. 이 변수는 첫번째 스티커를 사용했으므로 dp0 = sticker0를 해주며 두번째 스티커는 사용하지 않았으므로 dp0과 같은 dp1 = sticker0이다. 이제 dp2부터는
문제의 요점은 모든영역을 커버하는 기지국을 최소로 설치하는 것이다. locate를 하나 정하고 stations의 값을 기준으로 0번째 인덱스부터 locate >= stationsidx-w 이라면 locate = stationsidx+w+1 만큼 이동해주고 인덱스를 증가
문제의 핵심은 dic를 얼마나 잘 사용하느냐를 물어보는 문제 이다. 꼭 노래장르의 dic인 genres_dic와 total_list는 defaultdict를 선언하여 dic를 형성하고 각 장르의 값의 plays에 들어있는 합을 genres_dic에 넣어준다. 그리고 안
이 문제는 문제 설명을 정확하게 이해한 다음 풀어야 하는 문제이다. 가장 중요한 핵심포인트는 공통원소가 1개 이상으로 각 쌍마다 공통값이 최소 1개는 있어야 한다는 조건이다.이 때, 각 원소가 a배열의 몇 번 등장했는지를 본다. 배열의 등장한 횟수가 많을수록, 스타 수
이 문제는 특별한 해결 방법이 필요하기보단 개발자로서의 센스가 있어야 한다. 먼저 수포자 1,2,3의 변수를 리스트로 선언해주고 각각 값을 arr1, arr2, arr3에 넣어준다. 그 후 각각의 정답을 맞춘 횟수를 result1, resutlt2, result3로 초
이 문제는 파이썬의 기본적인 것이 많이 들어가는 문제이다. 일단 조각을 합친다는 말과 앞뒤도 바꿀수 있다는 말에 순열인 permutations 함수를 사용했다. numbers를 리스트로 변환시키고 이 리스트의 갯수 만큼 순열을 찾는 permutaions를 사용한다. 이
참조한 풀이 https://bladejun.tistory.com/153처음에 문제를 보고 아 문자열 상에서 바꾸면 되겠지? 라는 생각으로 for문을 중첩으로 3번 돌렸다가 시간초과로 대참사가 났다. 그리하여 다른 사람의 코드를 참조하였다. 이 문제를 stack
참조한 풀이 https://velog.io/@eehwan/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%92%8D%EC%84%A0-%ED%84%B0%ED%8A%B8%EB%A6%AC%EA%B8%B0-%E
이 문제는 전형적인 백트래킹 문제로 저번에 보았던 코딩테스트에서 나온 문제와 꽤 유사하다 (물론 코딩테스트 쪽 문제가 더 어렵게 나온다.) 이런 유형의 문제는 재귀에 대한 이해와 dfs쪽의 그래프에 대한 이해도 있어야 해서 백트래킹은 상당히 어려운 부류로 속해진다. 하
단순한 구현문제이다. num이라는 10진수를 넣었을때 10진수를 2진수로 변환하는 trans라는 함수를 작성하고 arr1과 arr2안의 원소값을 trans로 변환시켜 각각 matrix1과 matrix2에 넣은뒤에 matrix1과 matrix2 둘 중 하나라도 1이 있다
문제 그대로 구현하면 되는 문제이다. 하지만 생각하는 것에 따라 for문을 이중으로 쓰냐 한번 쓰냐로 바뀔수 있다. 가장 좋은 방법은 phone_book 리스트를 sort하고 phone_book의 인접한 원소만 확인하여 접두사가 일치하는 것이 있으면 False 아니면
participant와 competition 리스트를 sort만 해주면 쉽게 풀리는 문제이다. sort를 해준뒤에 zip을 통하여 for문을 돌렸을때 participant와 competition원소 i, j가 다르다면 그 i 값이 완주하지 못한 선수이고 만약 모두 일치
처음 이 문제를 풀었을 때가 8개월 전인거 같다 그 때는 왜 level2지? level3도 될거 같은데 라고 했다. 하지만 지금 다시 풀어보면서 이 문제는 level2가 적당한 것 같다. 그 이유는 내가 생각할거 없이 문제에서 모든 해답을 주고 있고 문제에서 하라는 대
내 기억상 코딩테스트 때는 잘 못풀었던 문제로 기억하는데 지금 풀어보니 쉽게 풀린 문제다. 가장 기초적인 bfs 문제로 P사이의 거리를 계산하고 2이하이면 거리두기를 하지 않은 것이므로 0을 return 하고 그게 아니라면 1을 return 하면 되는 문제이다.
비트 문제에 약한 나한테는 level2중에서 어려웠던 문제.해결책은 간단하다. 첫 번째로 numbers의 원소가 짝수라면가장뒤에 있는 0을 1로 바꾸어주면 된다.그게 아닌 홀수라면가장뒤에 있는 0을 찾아 1로 바꾸고 +1한 그 다음의 인덱스를 찾아 0으로 바꾸어 주면
signs만큼 반복문을 돌며 signs의 원소가 트루이면 그 때 absolutes의 인덱스는 + 아니라면 -로 answer에 넣어서 return 해준다.
문제 설명 전체 코드 해결 방법 문제 그대로 약수의 갯수를 세주는 num_cnt함수를 하나 만들고 left에서 right까지 짝수면 answer에 +해주고 홀수면 -해준다.
각각의 숫자를 replace로 구현해주면 끝난다.
문제는 이곳을 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/77484쉬운 문제인데 이상하게 문제를 길게 만들고 조금 억지로 난이도를 있게 하고 싶어한 것 같은 느낌을 받은 문제이다.문제 자체의 해결
이 문제는 그냥 풀이법을 외웠다.triangle 이중리스트가 피라미드 형태인 것을 보면서 인덱스 1번부터 시작하여 반복문을 돌린다. 두 번째 인덱스부터 행의 원소는 2개 이므로 k= 2부터 시작하여 다음 triangle의 행으로 갈때마다 k에 +1을 해준다. 그 후 f
다익스트라 알고리즘 문제의 기초가 되는 문제이다. 만약 다익스트라를 모른다면 https://velog.io/@bbkyoo/%EB%A9%B4%EC%A0%91%EC%A4%80%EB%B9%84%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%9816%EC
가장 기본적인 그래프 문제이다. 이 문제는 dfs와 bfs로 풀 수 있지만 나는 bfs로 풀었다. 가장 핵심은 간선의 갯수를 세는 것이므로 dist라는 리스트를 하나 정의해서 정점 1부터 시작했을 때 부터 간선이 추가될 때마다 dist연결된 정점 = dist연결된 정점
Level1 중에서 가장 생각을 많이 한 문제 인것 같다. 내가 푼 방법은 그리디 라기보단 구현에 가까워서 그리디로 푼 사람의 코드를 참고 했다.문제의 키워드는 reserve와 lost 리스트는 서로 중복된게 있으면 안된다는 것이다. 따라서 set으로 분리하여 rese
풀이법을 생각 해내면 쉬운문제이고 아니라면 어렵게 빠지는 문제이다. people 리스트를 일단 오름차순으로 정렬 시킨뒤 맨 앞의 인덱스와 맨 뒤의 인덱스를 각각 right, left로 만들고 peopleright + peopleleft 값이 limit 보다 크다면 맨
스택과 큐의 문제라는 생각으로 풀면 쉽게 풀 수 있는 문제이다. arr1에는 priorities의 인덱스를 넣어주고 arr2에는 priorities를 얕은복사를 해준다. 그 후 인덱스를 지칭하는 변수 i를 0으로 초기화 해주고 while True로 반복문을 돌린다. 여
힙의 특성을 알면 쉽게 풀 수 있는 문제이다. 일단 문제 해결법은 문제 그대로 구현을 하면 되어서 다른 이해가 필요하지 않다. 코드를 보면 heapq.heapify를 사용하여 heap리스트를 힙으로 만들어준 후 반복문을 돌리는데 while의 조건을 heap0가 k보다
level3 중에서 쉬운 축에 끼는 문제라고 생각한다. 자료구조 중에서 힙을 사용하여 문제 그대로 구현하면 되는 문제이다. 코드를 보면 heapq를 import하여 heap이라는 리스트를 만들어 놓고 operations원소가 D -1일때는 최솟값을 pop해주고 D 1일
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/83201위클리 챌린지 2번째 문제인 상호 평가 문제이다. 해결법은 정말 문제를 안읽어보지 않은 이상 모를 수가 없을 정도로 자세하
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/17676어렵다.... 역시 어렵다... 카카오.... 이 문제는 생각보다 이해를 하면 쉬운 문제이지만 이해를 하기까지가 정말 오래
문제 설명 문제는 이 곳 링크를 참조하길 바란다. https://programmers.co.kr/learn/courses/30/lessons/81303 시간 초과 코드 전체 코드 해결 방법 어렵다.... 역시 어렵다... 카카오.... 옛날에 카카오 코테에서
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/43162기초적인 그래프 문제이다. 문제의 핵심은 computers에서 이어져 있는 정점들의 갯수를 세는 것이므로 visited라는
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/49191기초적인 그래프 문제이다. 문제의 핵심은 입출력 예의 설명으로 "2번 선수는 1,3,4선수에게 패배했고 5번 선수에게 승리
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/17678참조한 코드https://walwal234.tistory.com/43진짜.... 카카오 문제는 너무 어렵다. 내가
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/42627현재 시점에서 처리할 수 있는 작업인지를 판별하는 조건은 "작업 요청시간"이 "바로 이전에 완료한 작업 시간 (start)
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/12900n=1,2,3,4일때의 result의 값을 따져본다면 n=1 -> result = 1n=2 -> result = 2n=3
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/42898동적배열법으로 왼쪽위 집에서 학교까지 모든 경우의 수를 계산하여 가는 문제이다. 따라서 matrix라는 m+1, n+1짜리
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/43163문제 그대로 그래프로 구현하면 되는 문제이다. 먼저 q라는 리스트에 begin변수를 넣고 while 반복문을 실행시킨다.
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/43164다른 사람의 코드를 참조했다.https://wwlee94.github.io/category/algorithm/bf
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/42884다른 사람의 코드를 참조했다.https://wwlee94.github.io/category/algorithm/gr
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/12904내가 보았을때 가장 시간이 짧은 팰린드롬 코드인 것 같다. for문을 이중으로 사용하여 전체를 탐색하여 answer보다 팰
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/12987처음에 A리스트와 B리스트를 내림차순으로 정렬을 해준다. 이러면 시간을 더 줄일수가 있다.그리고 A를 중심으로 B리스트와
문제는 이 곳 링크를 참조하길 바란다.https://programmers.co.kr/learn/courses/30/lessons/12907쉬운 거르름돈 문제가 아니다. 동적 계획법으로 메모이제이션 기법으로 풀어야 시간 초과가 나지 않는다. 결국 다른 사람 풀이
아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다.12 = 5 + 5 + (5 / 5) + (5 / 5)12 = 55 / 5 + 5 / 512 = (55 + 5) / 55를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다.이처럼
BFS 문제먼저 routes에 dict(list)형태로 ticket의 원소를 저장받는다.그 다음 BFS에서 ICN이 첫번째 도시이므로 stack = "ICN", 경로를 받을 path 리스트를 선언하고 stack에 원소가 있을때 stack의 마지막 리스트를 top에 받고
Kruskal알고리즘 문제Kruskal 알고리즘에서 핵심은 사이클이 생성되지 않게하는 것이다. 사이클이 생성되지 않기 위한 조건으로는 추가하려는 간선의 양끝점이 같은 집합에 속하지 않는 것이다.그래서 코드를 보면 먼저 비용을 기준으로 costs를 오름차순 정렬을 해준
이분탐색 문제구현으로 문제를 풀면 시간초과가 난다. 위의 코드에 주석을 잘 달아두어서 그것을 보면서 이해를 하는것을 추천한다.