[programmers] 양과 늑대 (python)
·
Study/algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krbfs와 graph를 사용하려다가 틀린 문제dfs를 통해 최대 양의 갯수를 구하면 되었다.이때 자식 노드를 마지막엔 방문 처리를 False로 해주어 나중에 다시 그 자식 노드를 방문할 수 있게 하는 것이 중요했다.def solution(info, edges): answer = [] visited = [False] * len(info) def dfs(sheeps, wolve..
[programmers] 요격 시스템 (python)
·
Study/algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr규칙만 잘 생각하면 되는 문제정렬 시 시작 기준이 아닌 끝나는 기준으로 먼저 정렬해야 한다는 점을 파악하지 못했었다def solution(targets): answer = 0 # 1. 끝나는 좌표 기준 2. 시작 좌표 기준 순으로 정렬 targets = sorted(targets, key=lambda x: [x[1], x[0]]) e = 0 # 각 미사일마다 ..
[programmers] PCCP 기출문제 3번 / 아날로그 시계 (python)
·
Study/algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/250135시간을 초로 바꿔서 각도 계산으로 겹침을 판단한다는 방향은 맞췄지만하지만 360도가 되면 0으로 바꿔버리게 되어 겹침을 판단 못하는 문제를 발견하지 못해 시간이 좀 걸렸다.def solution(h1, m1, s1, h2, m2, s2): answer = 0 # 초로 모두 환산 start_time = h1 * 60 * 60 + m1 * 60 + s1 end_time = h2 * 60 * 60 + m2 * 60 + s2 # 시작 지점에 겹쳐있는 경우 카운트 if start_time == 0 or start_time == 12 * 3600: ..
[programmers] PCCP 기출문제 2번 / 석유 시추 (python)
·
Study/algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr정확성과 효율성 두 가지를 따지는 문제bfs를 한번 돌려서 연결된 석유들을 모두 찾고 저장해둬서 다음번에는 다시 탐색 하지 않도록 하는것이 중요했다.from collections import dequedef solution(land): answer = 0 n, m = len(land), len(land[0]) dx = [-1, 1, 0, 0] dy = [0, 0, -1, ..
[softeer] [인증평가(4차) 기출] 슈퍼컴퓨터 클러스터 (python)
·
Study/algorithm
https://softeer.ai/practice/info.do?idx=1&eid=1204&sw_prbl_sbms_sn=83550 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 회고 예산의 범위가 매우 커서 처음엔 하나씩 올려가면서 찾는 방식을 선택했더니 시간 오류가 났다. 이 전에 이진 탐색으로 큰 범위에서 되게 빠르게 풀어나가는 문제를 softeer에서 풀었었는데 혹시 여기도 적용이 될까 해서 풀어봤는데 바로 문제 없이 풀렸다... import sys def check(mid): cost = 0 for i in power: if mid > i: cost += (mid - i) ** 2 if cost
[softeer] [21년 재직자 대회 본선] 트럭 (python)
·
Study/algorithm
https://softeer.ai/practice/info.do?idx=1&eid=631&sw_prbl_sbms_sn=82669 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 회고 처음엔 돈 범위만큼 배열을 만들어 각각의 이익을 얻으려면 필요한 size를 모두 넣어서 구하려고 했다. 지금 생각해보면 매우 무식한 방법이고 시간 초과가 뻔했다. 인터넷 검색을 좀 해봐서 각각의 buyer가 제시한 사이즈에 맞는 금액과 시나리오를 정렬을 하면 가장 사이즈부터 시나리오에 부합하는지 찾기 때문에 더 빠르게 답을 찾을 수 있었다. 만약 해당 buyer가 이전에 이미 지불한 금액이 있었다면 그 금액과 비교해서 더 큰 금액일 시 바꿔주는 부분도 필요했다. 그리고 처음 정렬을 해..
[softeer] [21년 재직자 대회 예선] 회의실 예약 (python)
·
Study/algorithm
https://softeer.ai/practice/info.do?idx=1&eid=626 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 회고 각 회의실마다 각 시간별로 스케줄을 만들어서 예약이 될 때마다 그 시간엔 예약이 되었다고 입력해준다. busy를 사용해서 회의실이 이미 예약 되었는지 체크를 한다. import sys n, m = map(int, sys.stdin.readline().split()) room = {sys.stdin.readline().strip(): [False] * 10 for _ in range(n)} for _ in range(m): r, s, e = sys.stdin.readline().split() s, e = int(s) - 9,..
[softeer] [21년 재직자 대회 예선] 이미지 프로세싱 (python)
·
Study/algorithm
https://softeer.ai/practice/info.do?idx=1&eid=627 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 회고 image의 크기가 크지 않아서 입력을 받을 때마다 bfs를 통해서 색깔을 모두 바꿔주었다. 하지만 계속 히든 케이스에서 시간 초과가 나서 좀 찾아봤더니 만약 x, y, c를 입력받았는데 (x, y)의 색깔이 c와 같다면 무한 loop를 돌게 되어서 시간 초과가 나는 것이었다. 간단하게 시작 지점에서 해당 좌표의 색이 바꾸려는 색과 같은지 조건문 하나만 넣어 간단하게 해결하였다. import sys from collections import deque dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] h,..