문제 보러 가기 👈 클릭! ✔ 문제 파악 알아볼 수 없는 숫자는 0 으로 표시 된 길이가 6인 숫자배열(lottos), 길이가 6인 로또당첨번호(win_nums)가 주어졌을때, 당첨 가능한 최고 순위, 최저 순위을 return하는 문제 ✔ 풀이방법당첨 가능한 최고
문제 보러 가기👈 클릭!✔ 문제 파악숫자가 순서대로 적힌 행렬이 있음. 직사각형 모양의 범위 x1, y1, x2, y2가 여러개 담겨져 있는 queries을 입력받음. queries의 원소 순서대로 행렬 위에서 직사각형을 잡고, 테두리에 존재하는 숫자들만 시계방향으로
문제 보러 가기👈 클릭!✔ 문제 파악칫솔 1개를 팔면 100원을 버는 다단계 조직이 있음. 이때, 자기가 버는 돈을 다 가지는게 아니라 다단계 조직에서 윗사람한테 10%을 주고 나머지 90%를 가짐. 윗사람의 윗사람도 윗사람이 받은 10%의 10%를 받음. 이때 각
✔ 문제 파악가로,세로 길이가 w,h인 직사각형이 주어졌을 때, 대각선을 긋고 가로,세로 길이가 1인 멀쩡한 정사각형의 개수를 return.✔ 풀이 방법직사각형에서 대각선을 그으면 똑같은 2개의 직각삼각형이 생김 -> 하나의 직각삼각형에서 멀쩡한 정사각형의 개수를 구하
문제 보러 가기 👈 클릭! 💡 풀이 ✔ 풀이 방법 1단계 : lower() 함수 사용하여 문자열 내부의 모든 대문자를 소문자로 변환 2단계 : 아스키코드 사용하여 숫자범위(48~57), 알파벳소문자범위 (97~122), 가능한 특수문자(95, 45, 46) 일
문제 보러 가기 👈 클릭! 💡 풀이 ✔ 풀이 방법 1 step 1) 딕셔너리 자료형과 조합 모듈(from itertools import combinations)을 사용하여 코스요리 메뉴별 시킨 사람명 수 카운트 이때, ('A', 'C')와 ('C', 'A')는
문제 보러 가기 👈 클릭!주어진 grid가 그래프는 아니지만, 사실상 동서남북이 연결된 그래프로 가정grid 중 '1'인 부분을 찾아 해당 지점부터 동서남북으로 DFS순회순회할때 방문한 gridi의 값을 '0'으로('1'이 아닌 다른 값으로) 바꿔서 다시 방문하지 않
문제 보러 가기 👈 클릭! 💡 풀이 ✔ 첫번째 시도_풀이 방법 (정확성과 효율성 모두 통과 못함) 참가자들의 이름이 key, 값이 -1(동명이인 참가자가 있으면 해당값 -1 해줘서 값이 -2)인 딕셔너리 생성. 해당 딕셔너리에서 완주한 참가자가 key로 존재하는
문제 보러 가기 👈 클릭! 💡 풀이 ✔ 내 풀이 방법 BFS 사용 queue에 들어있는 시작값은 (0, numbers[0]), (0, -numbers[0]) 2가지 이다. (이때, 0은 인덱스를 의미) numbers[0]을 시작으로 다음 리스트 요소를 방문하여 다음
문제 보러 가기 👈 클릭!n/2 만큼 이동하고 순간이동 하면 됨, n/2/2 만큼 이동하고 순간이동 하면 됨, n/2/2/2만큼 ...==> n을 2로 나눈 몫이 1이 될때까지 계속 나누면서 몫이 홀수일경우 건전지 사용량을 1만큼 증가
문제 보러 가기 👈 클릭! 초기 위치 (0,0), 갔던길인지 가지 않았던 길인지 판별하기 위해 빈 리스트 load 선언 => 각 명령어를 키로, (x축 이동거리, y축 이동거리)를 값으로 가지는 딕셔너리 선언하여 명령어가 바뀔때 마다 해당하는 값 만큼 위치 이동 =>
문제 보러 가기 👈 클릭! 💡 풀이 ✔ 풀이 방법_1 가능한 스킬순서의 모든 경우를 리스트 skill_order에 추가 -> 스킬중 스킬순서 구현 코드 같은 방법이지만 더 간결한 코드👇
문제 보러 가기 👈 클릭! 💡 풀이 ✔ 풀이 방법
문제 보러 가기 👈 클릭!progress_q = 완성되지 않은 기능(큐 자료구조) speed_q = 완성되지 않은 기능의 속도(큐 자료구조)기능이 모두 완성 될때까지 day를 1씩 늘려가며 맨 앞에 있는 기능이 완성됬는지 아닌지 확인한다.기능이 완성됬을경우, 해당 기
문제 보러 가기 👈 클릭!그래프를 인접리스트 형태로 표현한다.파이썬의 heapq모듈을 사용하여 최솟값을 항상 pop한다.거리가 최소인 값을 pop하고 해당 노드를 방문한 적이 없다면 딕셔너리 path에 노드:최단거리 를 추가하고 해당 노드와 인접한 노드들을 거리와 함
문제 보러 가기 👈 클릭!변환가능한 단어를 인접한 노드로 생각하여 인접리스트형태로 그래프를 생성한다.인접한 노드인지 아닌지 판별하는 방법:=> 전체 중 1개의 문자가 다름=> 이때, 다른 문자의 위치가 똑같아야한다는 점에 주의한다=> ex) hhf 와 hkh는 1개의
문제 보러 가기 👈 클릭!큐 자료구조에 (인덱스, 문서의중요도)를 입력받은 문서의 중요도 배열 순서대로 넣는다.가장 큰 중요도를 구한다.맨 앞 문서의 중요도가 가장 큰 중요도보다 작을경우, pop하고 맨 뒤에 push 한다.가장 큰 중요도보다 같을경우 pop하고, 내
문제 보러 가기 👈 클릭!파이썬의 heapq모듈을 사용하여 최소힙을 구현한다.입력받은 scoville을 sort하여 인덱스0 위치에 최솟값이 존재하게 만들어준다.가장 안 매운 음식을 pop하여 k와 비교한다.k보다 작으면 두번째로 안 매운 음식을 pop하여 가장 안
문제 보러 가기 👈 클릭!다음과 같이 옷을 가지고 있다고 가정하자.머리 : 썬글라스, 가발, 상의: 검정옷, 파란옷, 하얀옷, 하의: 청바지, 반바지, 치마 머리 : 총 개수 + 아무것도 안하는 경우 = 2 + 1 = 3상의 : 총 개수 + 아무것도 안하는 경우
문제 보러 가기 👈 클릭!인자로 주어진 전화번호 배열을 .sort()정렬하면 접두사인 관계끼리 붙어 있게 된다.(전화번호는 int가 아닌 string으로 주어지기 때문에 정렬하게 된다면 '123'과 '1234'가 붙어있음)따라서 주어진 전화번호 배열을 sort()로
문제 보러 가기 👈 클릭!트럭이 다리를 건너는데까지 걸리는 시간 = bridge_length 이므로다리 위 트럭을 표현하는 큐에 0\*bridge_length를 초기값으로 할당하고, 1초씩 지날때마다 popleft(), 다리위에 올라갈 트럭이 있으면 해당 트럭의 무게
문제 보러 가기 👈 클릭! 💡 풀이 ✔ 풀이 방법 구현 코드 (재귀)👇 구현 코드 (stack)👇
문제 보러 가기 👈 클릭! 💡 풀이 ✔ 풀이 방법 구현 코드👇
문제 보러 가기 👈 클릭!📝 두 풀이는 genre_sort를 구하는 점이 다름
문제 보러 가기 👈 클릭! 💡 풀이 ✔ 풀이 방법 1 answer의 초기값은 끝까지 주식의 값이 내려가지 않았을경우의 값으로 채운다. => answer = [len(prices)-1,len(prices)-2, ... , 1, 0 ] prices를 반복하며 stac
문제 보러 가기 👈 클릭!python의 heap은 최소힙. =>인덱스0에 최솟값 존제최소값 제거 => heapq.heappop()최대값 제거 => 정렬 후, pop() => 정렬하면 최대값이 맨 마지막 인덱스에 존재하므로 pop()하면 최대값이 삭제 됨최대값 제거
문제 보러 가기 👈 클릭!슬라이싱 이용하여 범위를 자르고 sorted메서드 사용하여 정렬 후 k번째 값 answer에 추가
문제 보러 가기 👈행을 반복하며 경비원이 없는 행 카운트(n_need)열을 반복하며 경비원이 없는 열 카운트(m_need)하나의 경비원당 행, 열 두가지를 만족필요한 최소한의 경비원 수= min(n_need, m_need) + max(n_need, m_need) -
문제 보러 가기 👈m개 중 n개를 선택다리끼리는 서로 겹칠 수 없다는 조건이 있으므로 순열이 아닌 조합의 개수 return
첫 번째 칸이 검은색인 체스판 chess_B, 첫 번째 칸이 흰색인 체스판 chess_W을 만들어서 일치 여부를 판별한다.현재 위치의 행과 열을 더했을 때 짝수이면 첫 번째 칸과 같은 색 이어야 하고, 홀수이면 첫 번째 칸과 다른 색 이여야 체스판을 만족한다.
원의 중심과 반지름을 이용하여 적이 있을 수 있는 x, y의 범위를 좁힌 후, (x - x1)2 + (y - y1)2 = r12, (x - x2)2 + (y - y2)2 = r22 을 만족하는 (x, y)의 개수를 구함규현과 승환의 위치와 적 까지의 거리를 이용하여 각
fn = (0이 출력되는 횟수, 1이 출력되는 횟수) 생성f의 초기값은 f0 = (1, 0) , f1 = (0, 1)f2 = (f2 - 1 + f2 - 2, f2 - 1 + f2 - 2 )...fn = (fn - 1 + fn - 2, fn - 1 + fn - 2)📝
2차원 리스트 land를 반복하며 해당 위치의 값이 1일때 그 위치를 기준으로 dfs탐색한다. 값이 1인 곳을 방문하면 값을 0으로 변경하여 다시 방문하지 않도록 한다. dfs탐색이 끝나면 배추 흰 지렁이 개수를 1 증가 시킨다.
딕셔너리 자료형 bottle 사용=> key = 물의 양(liter), value = 물병 개수다음과 같은 과정을 조건을 만족할 때 까지 반복👇👇👇👇👇👇👇👇👇👇👇👇합칠 수 있을 만큼 합치기 -> 가지고 있는 물병의 개수가 K개 이하인지 판별\->
문제 보러 가기👈 💡 풀이 ✔ 풀이 방법1 구현 코드👇 ✔ 풀이 방법2 구현 코드👇
문제 보러 가기 👈 클릭!파이썬 알고리즘 인터뷰 61번 가장 큰 수 와 동일한 문제하지만 프로그래머스에서 동일한 방법(삽입정렬)으로 풀면 시간초과 발생(삽입 정렬의 시간 복잡도는 O(n2))numbers의 길이는 1 이상 100,000 이하 이므로 삽입정렬 풀이 방식
문제 보러 가기 👈 클릭! 💡 풀이 ✔ 풀이 방법 초기에는 단순히 다음과 같이 코드를 짰다. 하지만 이 코드는 테스트코드 16개 중 단 2개만 통과했다. 질문하기 게시판을 통해 다음과 같은 테스트 케이스를 알 수 있었다. _**citations = [9, 9,
브루트포스 풀이각 수포자의 정답을 answers길이 이상 할당person = {수포자 : 정답 개수}를 선언하고, answers을 반복하며 답을 맞췄을때, 해당 수포자 키의 값을 1 증가리스트에 최대값을 가지는 키 값을 담아 return📝 기억해라 모듈러 연산!
문제 보러 가기 👈 클릭!순열 모듈 permutations 사용 하여 길이가 1~ len(numbers)인 모든 경우의 수를 구하고 소수인지 아닌지 판단소수이면 prime_nums에 원소 추가중복을 막기 위해 set자료형 사용
문제 보러 가기 👈 클릭!yellow 격자 부분의 가로 세로를 x, y로 둔다.brown = 2(x + y) + 4y = 1부터 1씩 증가시키며 위의 식을 만족하는 x, y를 찾는다.x, y는 yellow 격자 부분의 가로 세로 이므로 전체 가로세로 x + 2,
문제 보러 가기 👈 클릭!"여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다." => 다음 조건을 만족시키기 위해 set자료형을
문제 보러 가기 👈 클릭!1) ^ v 방향 조작^으로 이동했을 경우 조작 횟수와 v으로 이동했을 경우 조작 횟수를 비교하여 작은값을 갖는 경우를 선택2) < > 방향 조작현재 위치에서 왼쪽 오른쪽으로 'A'가 아닌 조작이 필요한 문자를 만날때 까지 이동할 때,
문제 보러 가기 👈 클릭!stack자료구조 사용number를 반복하며 stack에 값을 추가한다.단, 현재값이 stack-1 값보다 클 경우 현재값 이상의 값이 나올 때 까지 stack의 값을 제거한다. (k번 이하 제거)number를 다 반복하는 중간에 k개의 수를
문제 보러 가기 👈 클릭! 💡 풀이 ✔ 풀이 방법 투 포인터 사용하기 위해 정렬 각 포인터 left, right가 태울 수 있는 사람 중 가장 몸무게가 적은사람, 몸무게가 많은 사람을 가르킴 (이미 태운 사람은 가르키지 X) 다음과 같은 로직으로 보트에 태움 포인터
문제 보러 가기 👈 클릭!kruskal알고리즘 사용가중치가 가장 작은 간선부터 확인=> 해당 간선이 cycle을 발생하지 않을 경우 연결=> 부모노드가 다를 경우 cycle을 발생하지 않음=> 연결 정보 connection을 따라 올라가며 node번호와 값이 같을 때
문제 보러 가기 👈 클릭!가장 먼저 고속도로를 진입 한 순서대로 정렬로직 👇n번째 차량 진입/진출 구간 pop()해당 구간과 다음 차량의 구간이 겹치면, 해당 구간을 겹치는 구간으로 변경하여 다음 차량 구간과 겹치지 않을때 까지 pop() & 겹치는 구간 갱신 반복
문제 보러 가기 👈 클릭!놀이공원 부지의 시작점을 가장 왼쪽의 맨 위 지점으로 지정N X N 지도에서 시작점이 될 수 있는 위치를 반복하며 해당 위치를 시작점으로 갖는 K X K 격자안의 폐기물 개수를 카운트폐기물 개수가 이때까지 구한 폐기물 개수의 최솟값 보다 작을
문제 보러 가기 👈 💡 풀이 dfs사용하여 모든 경우를 탐색 구현 코드(Python) 👇 구현 코드(Java) 👇 📒 dfs로 전달하는 매개변수의 개수를 줄이는 코드 구현 코드(Python) 👇 구현 코드(Java) 👇