알고리즘/프로그래머스문제풀이 69

[Python/프로그래머스]순위검색_(KaKao)_[구현,bisect(이분탐색)]

https://school.programmers.co.kr/learn/courses/30/lessons/72412 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 으렵다. 레벨 2인데 이러면 어떡하지..ㅋㅋㅋㅋ 풀이과정 : 1. info를 공백을 기준으로 나눈다. 2. 점수와 나머지들을 각각 value, key로 구분한다. 3. key로 만들 수 있는 모든 조합을 combination을 이용해 만든다. 4. info_dict에 이 조합을 가진 지원자가 있음을 점수를 저장하면서 알려준다. 5. 저장한 점수들은 이분탐색을 이용할 것이므로 정렬해준다. 6. 쿼리..

[Python/프로그래머스]뉴스 클러스터링_(KaKao)_Counter이용

https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 교집합일 때는 min을, 합집합일 때는 max로 하는 걸 어떻게 하지 고민하다가 너무 답답해서 구글링한 문제 그냥 Counter에서 &, |를 하면 해결된단다..... 그 후에 counter에서 elements를 통해서 문자들을 개수 만큼 만들고 그것의 개수를 센다. 코드 : from collections import Counter def solution(str1, str2): str1 = str..

[Python/프로그래머스]튜플_(KaKao)_문제 이해가 잘 안되요

https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221013 문제가 이해가 잘 안되었다. 이게 무슨 소리람? 근데 질문하기에서 한 답변을 보고 이해가 갔다. [] 로 둘러쌓인 튜플은 순서가 달라지면 다른 튜플이지만 튜플로 만든 {}는 내부 순서가 달라져도 괜찮다!! 그러니까 [2,1]은 {1}을 만들 수 없다. [4,1,3,2]은 한자리수 {}로 4밖에 못만든다. 앞에서부터 밖에 못묶는다. 근데 묶고 나서는 그 안에서 순서를 바꿀 수 있..

[Python/프로그래머스]아이템 줍기_(BFS)

https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20220924 테두리 처리 어떻게하지....? 를 생각하다 모르겠어서 구글링했다. 생각보다 간단한 방법을 쓴다. 내부일 경우 0으로 채우고 내부가 아닌경우 0이 아닌지 확인하고(다른 도형의 내부인지) 둘 다 아니면 1을 저장해 모서리라는 것을 알려준다. 그런데 다들 *2를 해서 왜들 이러나... 이해가 안됐는데 아래 참고 블로그를 보고 단번에 이해했다. 경계선이 인접할 경우 의도하지 않은 최..

[Python/프로그래머스]게임 맵 최단거리_(BFS)

https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정말 쉽다. 그냥 BFS from collections import deque dx = [0,1,0,-1] dy = [1,0,-1,0] def solution(maps): q = deque([[0,0]]) n,m = len(maps), len(maps[0]) while q : x,y = q.popleft() for i in range(4) : nx,ny= x + dx[i], y + dy[i] if 0

[Python/프로그래머스]배달_다익스트라

https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221014 전형적인 다익스트라 문제 + 리스트 돌면서 k보다 작은 수 구해 return 하면 된다. 이 문제는 양방향이다!! 양방향인지 단방향인지 잘 보고 해야한다. 코드 : import heapq def dijkstra(distance,mp) : q = [] # dist는 0, node 시작 번호는 1 heapq.heappush(q,[0,1]) distance[1] = 0 while q..

SQL_group,having,join

group by : 그룹화 having : 그룹에 조건을 건다. where : 레코드에 조건을 건다. hour(datetime) : 시간만 추출 Join 양쪽에 다 있는 것 : inner join 양쪽 + 왼쪽 : left outer join 예시 ) select * from topic left join author on topic.author_id = author.author_id topic 테이블을 왼쪽에 놓고 오른쪽에 author 테이블을 놓는데 이 둘은 author_id로 연결되는 것이다 . 만약 topic에는 있지만 author 테이블에 없다면 authro에 있는 data를 null로 처리한다.

[Python/프로그래머스]양궁대회_Bfs

https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 2022-10-20 라이언이 이기려면 1. (해당 점수에 )어피치보다 많이 쏘기 2. (해당 점수에 쏠 )화살 아껴서 다른 화살에 몰빵하기 이 경우를 나누어서 deque에 넣는다. - 만약 n발 보다 많이 쏘면? continue - 마지막에 쏜다면 남은 화살 다 쏘기 - 만약 n발이라면 lion, apeach의 점수를 구해서 가장 큰 GAP을 만드는 화살의 리스트를 res에 넣기 focus는 ..

[Python/프로그래머스]k진수에서 소수 개수 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/92335?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221021 1. k진수로 변환 2. 소수 찾아 개수 구하기 코드 : def solution(n, k): word = "" # k 진수로 변환 while n : word = str(n%k) + word n = n//k word = word.split('0') cnt = 0 for w in word : # 빈공간이라면 if len(w) == 0 : continu..

[Python/프로그래머스]추석 트래픽

https://programmers.co.kr/learn/courses/30/lessons/17676 start_time[j] - 1000: cnt += 1 answer = max(answer, cnt) return answer def get_time(time): hour = int(time[:2]) * 3600 minute = int(time[3:5]) * 60 second = int(time[6:8]) millisecond = int(time[9:]) return (hour + minute + second) * 1000 + millisecond def get_start_time(time, duration_time): n_time = duration_time[:-1] int_duration_time =..