Loading...

[Python] 프로그래머스 - 예상 대진표

https://programmers.co.kr/learn/courses/30/lessons/12985 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr mid를 이분탐색으로 절반씩 옮겨가며, mid기준으로 같은쪽에 있으면 이분탐색을 계속 돌리고 서로 다른 쪽에 있으면 cnt를 출력하는 식으로 코드를 짰다. import math def solution(n, a, b): def binary_search(left, right, cnt): global answer # 이분 탐색 if left ..

[Python] BOJ 21608 - 상어 초등학교

# 이번 2021년 삼성SW역량테스트 오전 기출문제이다. 최근 몇년간 문제들을 보면 삼성은 상어를 너무 좋아하는거같다 ㅋㅋㅋ (아기상어, 청소년 상어, 상어 초등학교 등등..) # 지겹도록 나오는 구현, 시뮬레이션 문제이다. (BFS를 곁들인) 1. 우선 student_list라는 딕셔너리에 좋아하는 학생들의 번호를 넣어준다. 2. 40번째 줄부터 studnet_list에 있는 학생 순서대로 시뮬레이션을 돌려준다. 3. m에 모든 학생 자리배치를 완료한 뒤 happy함수로 만족도를 구해서 출력한다. # first_check함수는 bfs로 그래프를 탐색하듯이 상하좌우를 탐색하며 (nx, ny)가 맵을 벗어나지 않고 m[nx][ny]가 student_list[st]에 존재하면(좋아하는 학생이 인접한 칸에 있..

[Python] 프로그래머스 - 괄호 회전하기

https://programmers.co.kr/learn/courses/30/lessons/76502?language=python3 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 월간 코드 챌린지(4월)에 출제된 문제이다. # check함수는 올바른 괄호인지 판별하는 함수이다. 올바른 괄호인지 판단하는 문제는 스택을 공부할 때 대표적으로 푸는 문제라 함수를 짜는데 어려움은 없다. # input값을 deque에 넣고 ip의 길이만큼 rotate(-1)을 해준다. (왼쪽으로 한칸씩 밈) 만약 check(ip)가 True이면 올바른 괄호이므로 answer에 1을 증가시켜준다. from collections import deque def solution(ip): def check(s): st..

[Python] BOJ 1904 - 01타일

https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net # N의 개수에 따라 일단 노가다로 직접 세보았다. N = 1 -> 1 N = 2 -> 00, 11 N = 3 -> 001, 100, 111 N = 4 -> 0011, 0000, 1001, 1111, 1100 N = 5 -> 00001, 00100, 10000, 11001, 10011, 00111, 11100, 11111 # 1개, 2개, 3개, 5개, 8개, 13개... 그냥 피보나치수열처럼 이전 두..

[Python] 프로그래머스 - 네트워크

https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr BFS문제이다. from collections import deque def solution(n, computers): cnt = 0 visited = [False] * (n+1) graph = [[] for _ in range(n)] q = deque() # 연결되어 있는 컴퓨터 graph에 저장 for i in range(n): for j in rang..

[Python] 프로그래머스 - 타겟 넘버

https://programmers.co.kr/learn/courses/30/lessons/43165?language=python3 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 무난한 DFS/BFS 문제이다. def solution(numbers, target): global answer answer = 0 cnt = 0 dir = [-1, 1] # 숫자를 더하거나 빼거나 둘 중 하나이므로 [-1, 1] 선언 def dfs(cnt, k): global ..

[Python] 프로그래머스 - 구명보트

programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr # 문제분류가 Greedy로 되있긴 한데.. greedy가 솔직히 제일 어려운 것 같다. 쉬운 문제랑 개념자체는 쉬운데 그냥 분류없이 문제를 봤을 때 '아, 이건 그리디로 풀어야겠다.'라고 떠올리기도 힘들고 그걸 증명해야하기 때문에 더 어려운 것 같다. # 풀고보니 이분탐색 느낌도 나고 '투 포인터'인 것 같기도 하다. def solution(peo..

[Python] 프로그래머스 - 이중우선순위큐

programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 기본 heapq문제이다. 파이썬에서 '우선순위큐'를 사용하려면 priorityQueue가 아닌 heapq를 사용해야한다. import heapq def solution(operations): # 힙 정렬 def heap_sort(nums): heap = [] for num in nums: heapq.heappush(heap, num) sorted_nums = [] while heap: sorted_nums.append(heapq.heappop(heap)) return sorted_nums h = [] for o in operations: op = o.s..