본문 바로가기
반응형

Algorithm/프로그래머스57

[프로그래머스] 파이썬 문제풀이 - 두 큐 합 같게 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/118667# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 1. 먼저 두 큐의 합이 홀수인 경우를 걸러준다 2. 두 큐의 합을 같게 만들기 위해서는 큰 큐에서 작은 큐로 하나씩 넘겨주는것이다. 3. 2번과정을 반복하면 두 큐의 합이 같아지는 순간이 온다 4. 두 큐의 합이 절대 같아질 수 없는 경우가 존재하는데 큐에서 숫자를 넘겨줄때마다 연산회수를 세고 기준점을 넘어가면 -1을 리턴한다 5. 기준점의 경우 두 큐의 길이의 합으로 설정하게 되면.. 2023. 6. 9.
[프로그래머스] 파이썬 문제풀이 - 방문 길이 https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 첫 풀이 1. 이 문제에서 중요한건 가는길의 방향이 중요하지 않다는것이다. LRL 상황에서 출발점과 목적지가 다르지만 결국 왔던 길이기에 1이 된다. 2. 방향별로 범위를 넘지 않는다면 x,y좌표를 움직여준다 3. 시작점과 도착점을 튜플 형식으로 만들고 리스트에 없으면 넣어준다 4. 시작점과 도착점을 반대로 해서도 넣어줘야한다 def solution(dirs): answer=0 x,y=0,0 d=.. 2023. 6. 4.
[프로그래머스] SQL 문제풀이 - 상품을 구매한 회원 비율 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/131534 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 1. ONLINE_SALE 테이블을 USER_INFO 테이블의 가입년도가 '2021'인 조건으로 조회한다 2. 2021년에 가입한 회원 중 상품을 구매한 회원수 -> count(distinct user_id) ※ 여러번 구매한 사람이 있어서 중복 처리를 해야한다 3. 2021년에 가입한 전체 회원 수 -> (select count(*) from user_info where year(jo.. 2023. 6. 3.
[프로그래머스] 파이썬 문제풀이 - 순위 https://school.programmers.co.kr/learn/courses/30/lessons/49191 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에는 테이블을 작성해서 본인의 순위를 찾는것까지 구현했는데 순위를 아는 참가자 정보를 토대로 테이블을 업데이트 하는과정에서 복잡해져 다른 방법을 찾아봤다. 풀이 이 문제는 모든 노드로부터 모든 노드까지의 최단거리를 구할 수 있는 플로이드 와샬 알고리즘을 사용하면 쉽게 풀 수 있다. a선수가 b선수를 이겼다면 a선수는 b선수를 항상 이긴다는 사실에 집중해야한다. 문제에 적용해서 생각해보면 a선수.. 2023. 5. 29.
[프로그래머스] SQL 문제풀이 - 입양 시각 구하기(2) https://school.programmers.co.kr/learn/courses/30/lessons/59413 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. 간단해보였지만 빈 시간대에 테이블을 생성하는것에서 애를 먹었다. 두 가지 방법으로 풀이하고 알아보겠습니다. 첫 풀이 1. set을 통해 변수를 선언하고 이용할 수 있다 2. hou.. 2023. 5. 24.
[프로그래머스] 파이썬 문제풀이 - 합승 택시 요금 https://school.programmers.co.kr/learn/courses/30/lessons/72413#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제를 보면 그래프 문제라는것과 정점 사이의 최단거리를 구해야한다는 것을 파악해야한다. 그렇다면 모든 정점에서 모든 정점으로의 최단 경로를 구할 수 있는 플로이드 와샬 알고리즘을 적용해볼 수 있다. 하지만 여기서 합승이라는 개념이 조금 어렵게 다가올 수 있다. 출발지를 S 사람 a의 목적지를 A 사람 b의 목적지를 B 마지막으로 합승에서 하차하는 지점을 C라고 생각해보자 우리의 목적은 .. 2023. 5. 23.
[프로그래머스] 파이썬 문제풀이 - [1차] 뉴스 클러스터링 https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 1. 대문자를 소문자로 바꿔준다 2. 두 문자열을 탐색하며 두글자씩 끊어서 알파벳인경우만 리스트에 삽입한다 3. a와 b 리스트를 깊은 복사해준다 4. 다중집합에서 교집합을 구한다 5. 다중집합에서 합집합을 구한다 import math def solution(str1, str2): str1=str1.lower() str2=str2.lower() a=[] b=[] for i in range.. 2023. 5. 23.
[프로그래머스] 파이썬 문제풀이 - 여행경로 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 첫 풀이 1. 딕셔너리 구조로 그래프를 생성한다 2. 시작점:[도착점] 쌍으로 만든다 3. 도착점의 리스트를 역순으로 정렬한다 4. 스택에 출발점인 ICN을 넣고 나머지 점들을 순회한다 5. 스택이 빌 때까지 아래 과정들을 반복한다 6. 스택에서 top 데이터를 꺼낸다 7. top이 그래프에 없거나 top을 시작점으로 하는 티켓이 없는 경우, 스택에서 꺼내 path에 저장 8. 7번이 아니라면 t.. 2023. 5. 22.
[프로그래머스] 파이썬 문제풀이 - 섬 연결하기 https://school.programmers.co.kr/learn/courses/30/lessons/42861 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 1. 섬들을 모두 연결해야하고 이 때 최소 비용으로 연결하는 방법을 찾는다면 크루스칼 알고리즘을 사용할 수 있다 2. 섬들을 연결하는 비용으로 정렬한다 3. 적은 비용부터 하나씩 탐색하여 연결된 부모 노드를 찾거나 부모노드라면 더 작은 노드로 값을 바꾼다 def solution(n, costs): def getparent(parent,n): if parent[n]!=n: parent[n].. 2023. 5. 22.
728x90