그리디(Greedy) 알고리즘의 기초 문제이다.학생들이 n명이라면 1번 학생부터 n번 학생까지 반복문을 돌며 체육 수업을 들을 수 있는 케이스들을 확인했다.( 반복문 안의 k번째 학생의 케이스의 경우를 가정하면 )"lost" 배열에 있지 않은 경우"lost" 배열에 있
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42860처음에 쉽게 접근했으나 꽤 어려웠다. 그리디 알고리즘이라고 해서 현재 커서에서가장 가까운 글자로 커서를 이동하면 된다고 생각했는데 큰 허점이 있는 것
문제출처:https://programmers.co.kr/learn/courses/30/lessons/42586?language=python3각 기능은 이전 기능이 완료될 때까지 배포를 할 수 없으므로progresses 배열을 index 0~len(progres
문제출처:https://programmers.co.kr/learn/courses/30/lessons/43165?language=python3전형적인 DFS 문제인 것같다.1\. numbers 배열의 index를 증가시키면서 재귀함수를 호출한다.2\. 재귀함수의
문제출처:https://programmers.co.kr/learn/courses/30/lessons/43162어제 풀었던 문제와 유사한 문제였다.직접 연결, 간접 연결된 컴퓨터들을 하나의 네트워크로 생각하기 때문에 바로 DFS를 떠올렸다.방문한 컴퓨터는 이미
문제출처: https://programmers.co.kr/learn/courses/30/lessons/43163?language=python3아이디어가 어렵다기 보다는 구현에서 조금 애를 먹었다.mutable object( list )는 call by refe
문제출처: https://programmers.co.kr/learn/courses/30/lessons/43164list의 각 원소가 list의 형태로 이루어진 list가 중첩된 형태의 자료형이 주어졌다. 처음에는 출발지,도착지를 명확하게 사용하기 어려울 것 같
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42576처음에 단순히 participant가 completion 배열에 있는지 in 연산자를 통해 소거하는 방식으로 푸니 효율성 문제들을 통과하지 못했다.그
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42577?language=python3각 번호를 dict에 넣은 뒤 현재 내가 참조하는 k번째 문자열 원소 길이 1 ~ len(k)-1 까지 dict에 존재
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42578각 부위별로 옷을 분류를 한 뒤 각 부위별로 0개~1개를 선택할 수 있으므로(각 부위별 옷의 개수+1)을 정답에 곱해주면 모든 경우의 수를 고려할 수
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42579dict1에 key를 genre로 하고 (자신의 고유번호,재생된 횟수) 형태의 리스트로 저장한다.그리고 또 다른 dict2에 각 genre별로 재생된
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42883처음에 (현재 인덱스) ~ (현재 인덱스 + k) 까지의 숫자들 중에서 가장 큰 숫자를 정답에 추가하고 가장 큰 숫자의 앞 숫자들은 제거한 숫자들로
문제출처:https://programmers.co.kr/learn/courses/30/lessons/42584?language=python3 >### 접근법 문제길이가 매우 짧고 명료했다. 처음에 보고 이중 for문을 활용하여 단순하게 풀 수 있지 않을까 생각했는
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42885그리디 알고리즘 문제가 풀기는 쉽지만 효율적으로 코드를 짜기 쉽지 않은 것 같다.처음에 보트에 "2명"만 탈 수 있다는 지문을 읽지 못한 것이 큰 실
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42747H-Index 문제는 백준에서 풀어봤던 문제였다.근데 정리를 하지 않고 넘어갔더니 이번에도 같은 실수를 했다.문제는 매우 간단하다. h번 인용한 논문
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42839/solution_groups?language=python3문제에서 모든 접근법을 다 알려줬다.이는 얼마나 효율적으로 빠르게 짜느냐가 관건인 것 같다
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42842가로가 세로보다 길다.노란 색깔의 타일은 (가로 - 2) \* ( 세로 - 2) 와 같다.가로가 세로보다 길기때문에 전체 타일의 수의 제곱근 이상의
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42861프림 알고리즘으로 구현하였다.1\. 임의의 노드 하나를 list T에 추가한다.2\. 모든 노드가 T에 추가될 때까지 반복( while문 )3\. 가
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42884익숙한 형태의 문제였는데 쉽게 떠오르지 않아서 이런 저런 예시들을 손으로 그려가면서 고민했다.구간을 가지는 입력값들은 대체로 정렬을 통해 차례로 접근
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42895문제는 이해하기 쉬웠다. 숫자 하나만 사용하여 타겟넘버를 만드는 것이다.처음에 힘들었던 점은 괄호가 있다는 사실이였다. 그래서 dfs처럼 모든 괄호
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42897집이 동그랗게 배치되어 있지 않다면 인덱싱을 통해 k번째 집일 경우 최대 이득은1\. k-1번째 값을 포함하는 경우2\. k-2번째 값과 k번째
문제출처: https://programmers.co.kr/learn/courses/30/lessons/43238알고리즘 분류가 이분 탐색인 것을 몰랐다면 많이 헤맸을 것 같다.1\. 일단 먼저 최소~최대 범위를 구해야한다.최소는 n이 1이더라도 포함할 수 있는
문제출처: https://programmers.co.kr/learn/courses/30/lessons/43236풀이출처: https://ssocoit.tistory.com/61먼저 내가 생각했던 접근법들이다.바위의개수 중 n개를 제거하는 모든 경우를
문제출처: https://programmers.co.kr/learn/courses/30/lessons/49189처음에는 1번 노드부터 dfs 알고리즘을 통해 확인하는 방법을 사용했으나 이는 처음 한번 최단거리를 확인한 노드들도 또 방문하는 비효율적인 알고리즘
문제출처: https://programmers.co.kr/learn/courses/30/lessons/49191정답은 플로이드-와샬 알고리즘을 통해 구현해야 했다.플로이드-와샬은 알고 있었지만 문제를 보고 고민하면서 생각을 못해서풀이를 보고 이해를 했다.어떤
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42627현재 시간이 k ms 라면, 작업 시작시간이 k ms 이하인 작업들 중 가장 먼저 실행해야할 작업 ? 평균 소요시간을 낮추려면 현 시점에서 최대한 대
문제출처: https://programmers.co.kr/learn/courses/30/lessons/60057풀이 시간: 30분카카오 채용 기출문제이고 난이도는 프로그래머스 기준 Level 2이다.반복되는 문자열 "abcabc" -> "2abc" 와 같이 얼
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42888문제는 길지만 생각보다 간단한 문제였다.어떤 유저가 입/퇴장 할 때 마다 로그가 남는 다는 것인데로그는 "Enter" "Leave" 시에만 남는다.유
문제출처: https://programmers.co.kr/learn/courses/30/lessons/17676카카오 공채 코딩테스트 마지막 문제였다.마지막 문제답게 해설에 제일 어려운 난이도의 문제라고 나와 있었다.시간 기준으로 구간을 잡는 문제들은 몇 번
문제출처: https://programmers.co.kr/learn/courses/30/lessons/12973현재 참조하고 있는 문자가 이전 문자와 같다면 같이 제거된다.다음 문자는 제거된 문자들을 제외한 바로 이전 문자와 비교된다.3\. 이는 스택구조의 p
문제출처: https://programmers.co.kr/learn/courses/30/lessons/77485문제에 주어진 행렬들을 list comprehension을 통해 생성파이썬의 강력한 장점쿼리에서 주어진 좌표들을 가지고 회전하는 함수를 작성x1,y1
문제출처 : https://programmers.co.kr/learn/courses/30/lessons/72411orders 배열에 있는 각 원소들 ( "XYZ" , "WXY" 등 )으로 가능한 모든 조합들을 구한다.처음에 재귀함수를 통해 combination
문제출처: https://programmers.co.kr/learn/courses/30/lessons/60058solve(s) -> 문자열 s가 주어지면 해당 문자열의 균형잡힌 문자열을 찾고 s -> u,v 로 나눈다. 이후 문자열 u가 올바른 괄호 문자열일
문제출처 : https://programmers.co.kr/learn/courses/30/lessons/17677group(s) 문자열 s를 받아 두 글자씩 묶어 두 글자 모두 문자일 경우 모두 소문자로 변경하여 리스트에 하나씩 넣어 전체 리스트 반환group
문제출처: 방의 개수가 5개이고,방의 크기가 5x5로 제한된다.맨해튼 거리가 2이하이므로 거리가 1,2인 경우로 구분하면 좋을 것 같다.2-1. 거리가 1인 경우현재 위치에서 상,하,좌,우 1칸씩 떨어진 경우2-2. 거리가 2인 경우현재 위치에서 상,하,좌,우 2칸씩
문제출처 : https://school.programmers.co.kr/learn/courses/30/lessons/86052사이클에 대한 이해가 필요하다. A 노드에서 좌 방향으로 빛을 쏘아 시작한 사이클 B 노드에서 빛이 들어와 A 노드에서 좌 방향으로 빛
문제출처 : https://school.programmers.co.kr/learn/courses/30/lessons/1844DFS의 경우 최단거리의 길을 찾음과 동시에 종료하는 것이 아니라 모든 경우를 순회하여 Maximum Recursion Error을 일으
문제출처 : https://school.programmers.co.kr/learn/courses/30/lessons/77486자신의 상위 구성원이 누구인지 dict에 저장한다.A의 상위 구성원이 B인 경우 refA = "B"A의 상위 구성원이 center인 경
문제출처:https://school.programmers.co.kr/learn/courses/30/lessons/81303본 문제는 효율성 테스트케이스들을 통과하기 위해서는 링크드 리스트(Linked List)를 활용해야 한다. 세그멘테이션과 이분탐색을 통해
문제출처: https://www.acmicpc.net/problem/12015처음에는 주어진 배열을 분할정복으로 결과값을 더해가는 방식을 생각했었다.DP를 활용하여 이전값을 현재값에 더해가지만 분할정복 이후 왼쪽집합과 오른쪽집합과의 비교가 다시 필요하기 때문에
문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/92343처음 생각했던 풀이는 DFS였다. 이후 질문 게시판의 글들을 읽으며 생각이 정리되어 풀게 되었는데 DFS로 푸는 것이 틀린 것은 아니였지
문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/9234522년도 카카오 채용 마지막 문제였다.이전에 체스게임을 만든 적이 있는데 그때 사용한 알고리즘이 "민맥스 알고리즘"이다. 발판게임도 마찬