[프로그래머스 / PCCP 기출문제 3번 / Python] 충돌위험 찾기
·
Algorithm/프로그래머스
문제어떤 물류 센터는 로봇을 이용한 자동 운송 시스템을 운영합니다. 운송 시스템이 작동하는 규칙은 다음과 같습니다.물류 센터에는 (r, c)와 같이 2차원 좌표로 나타낼 수 있는 n개의 포인트가 존재합니다. 각 포인트는 1~n까지의 서로 다른 번호를 가집니다.로봇마다 정해진 운송 경로가 존재합니다. 운송 경로는 m개의 포인트로 구성되고 로봇은 첫 포인트에서 시작해 할당된 포인트를 순서대로 방문합니다.운송 시스템에 사용되는 로봇은 x대이고, 모든 로봇은 0초에 동시에 출발합니다. 로봇은 1초마다 r 좌표와 c 좌표 중 하나가 1만큼 감소하거나 증가한 좌표로 이동할 수 있습니다.다음 포인트로 이동할 때는 항상 최단 경로로 이동하며 최단 경로가 여러 가지일 경우, r 좌표가 변하는 이동을 c 좌표가 변하는 이..
[프로그래머스 / PCCP 기출문제 2번 / Python] 퍼즐 게임 챌린지
·
Algorithm/프로그래머스
문제당신은 순서대로 n개의 퍼즐을 제한 시간 내에 풀어야 하는 퍼즐 게임을 하고 있습니다. 각 퍼즐은 난이도와 소요 시간이 정해져 있습니다. 당신의 숙련도에 따라 퍼즐을 풀 때 틀리는 횟수가 바뀌게 됩니다. 현재 퍼즐의 난이도를 diff, 현재 퍼즐의 소요 시간을 time_cur, 이전 퍼즐의 소요 시간을 time_prev, 당신의 숙련도를 level이라 하면, 게임은 다음과 같이 진행됩니다.diff ≤ level이면 퍼즐을 틀리지 않고 time_cur만큼의 시간을 사용하여 해결합니다.diff > level이면, 퍼즐을 총 diff - level번 틀립니다. 퍼즐을 틀릴 때마다, time_cur만큼의 시간을 사용하며, 추가로 time_prev만큼의 시간을 사용해 이전 퍼즐을 다시 풀고 와야 합니다. 이전..
[프로그래머스 / PCCP 기출문제 9번 / Python] 지폐 접기
·
Algorithm/프로그래머스
문제 출처https://school.programmers.co.kr/learn/courses/30/lessons/340199문제민수는 다양한 지폐를 수집하는 취미를 가지고 있습니다. 지폐마다 크기가 달라 지갑에 넣으려면 여러 번 접어서 넣어야 합니다. 예를 들어 지갑의 크기가 30 * 15이고 지폐의 크기가 26 * 17이라면 한번 반으로 접어 13 * 17크기로 만든 뒤 90도 돌려서 지갑에 넣을 수 있습니다. 지폐를 접을 때는 다음과 같은 규칙을 지킵니다.지폐를 접을 때는 항상 길이가 긴 쪽을 반으로 접습니다.접기 전 길이가 홀수였다면 접은 후 소수점 이하는 버립니다.접힌 지폐를 그대로 또는 90도 돌려서 지갑에 넣을 수 있다면 그만 접습니다.지갑의 가로, 세로 크기를 담은 정수 리스트 wallet과..
[프로그래머스 / PCCP 기출문제 1번 / Python] 동영상 재생기
·
Algorithm/프로그래머스
문제 설명동영상 플레이어의 위치 제어 시스템을 구현하는 문제입니다.재생기는 'prev'와 'next' 두 가지 명령어를 지원하며, 오프닝 자동 건너뛰기 기능이 있습니다.prev 명령어는 현재 위치에서 10초 뒤로 이동합니다. 단, 영상의 시작점인 0초보다 앞으로는 이동할 수 없습니다. next 명령어는 현재 위치에서 10초 앞으로 이동하며, 영상의 총 길이를 초과하여 이동할 수 없습니다.재생 위치가 오프닝 구간에 들어가면(op_start ≤ 현재 위치 ≤ op_end) 자동으로 오프닝 끝 지점(op_end)으로 건너뜁니다.기본 이동 명령어prev: 현재 위치에서 10초 전으로 이동 (단, 0초 미만으로는 이동 불가)next: 현재 위치에서 10초 후로 이동 (단, 동영상 길이를 초과하여 이동 불가)자동 ..
[KAKAO BLIND RECRUITMENT / 2021 / Python] 합승 택시 요금
·
Algorithm/프로그래머스
문제 출처https://school.programmers.co.kr/learn/courses/30/lessons/72413문제 설명밤늦게 귀가할 때 안전을 위해 항상 택시를 이용하던 무지는 최근 야근이 잦아져 택시를 더 많이 이용하게 되어 택시비를 아낄 수 있는 방법을 고민하고 있습니다. "무지"는 자신이 택시를 이용할 때 동료인 어피치 역시 자신과 비슷한 방향으로 가는 택시를 종종 이용하는 것을 알게 되었습니다. "무지"는 "어피치"와 귀가 방향이 비슷하여 택시 합승을 적절히 이용하면 택시요금을 얼마나 아낄 수 있을 지 계산해 보고 "어피치"에게 합승을 제안해 보려고 합니다.위 예시 그림은 택시가 이동 가능한 반경에 있는 6개 지점 사이의 이동 가능한 택시노선과 예상요금을 보여주고 있습니다.그림에서 A..
[KAKAO BLIND RECRUITMENT / 2023 / Python] 이모티콘 할인행사
·
Algorithm/프로그래머스
문제 출처문제 보러가기문제카카오톡에서는 이모티콘을 무제한으로 사용할 수 있는 이모티콘 플러스 서비스 가입자 수를 늘리려고 합니다.이를 위해 카카오톡에서는 이모티콘 할인 행사를 하는데, 목표는 다음과 같습니다.이모티콘 플러스 서비스 가입자를 최대한 늘리는 것.이모티콘 판매액을 최대한 늘리는 것.1번 목표가 우선이며, 2번 목표가 그 다음입니다.이모티콘 할인 행사는 다음과 같은 방식으로 진행됩니다.n명의 카카오톡 사용자들에게 이모티콘 m개를 할인하여 판매합니다.이모티콘마다 할인율은 다를 수 있으며, 할인율은 10%, 20%, 30%, 40% 중 하나로 설정됩니다.카카오톡 사용자들은 다음과 같은 기준을 따라 이모티콘을 사거나, 이모티콘 플러스 서비스에 가입합니다.각 사용자들은 자신의 기준에 따라 일정 비율 이..
[백준 / 27440 / Python] 1 만들기
·
Algorithm/백준
😮 문제가 뭔가요?숫자 N이 주어지면 아래 세 가지 연산 중 하나를 선택해서 1을 만들어야 해요:3으로 나누어 떨어지면 ➡️ 3으로 나누기2로 나누어 떨어지면 ➡️ 2로 나누기1 빼기목표는 가장 적은 횟수로 1을 만드는 거예요!🔗 백준에서 직접 풀어보기😅 처음 생각나는 방법 (근데 이건 틀렸어요!)처음에는 이렇게 생각하기 쉬워요:"3으로 나누는 게 제일 빨리 작아지니까, 3으로 나눌 수 있을 때는 무조건 3으로 나누자!"N = int(input())count = 0while N != 1: if N % 3 == 0: N //= 3 elif N % 2 == 0: N //= 2 else: N -= 1 count += 1print(count..
[백준 / 13705 / Python] Ax+Bsin(x)=C
·
Algorithm/백준
머리말Baekjoon 13705번 문제(( Ax + B \sin(x) = C ))를 풀 때,처음에는 Python 내장 math.sin()을 사용했지만 '틀렸습니다'가 발생했다.왜 그럴까?이 글에서는math.sin()을 사용한 기존 코드Decimal + 직접 테일러 전개로 구현한 정답 코드를 비교하고,왜 Decimal + 테일러 전개가 필요한지 쉽게 설명한다.1. 기존 코드 (math.sin 사용)import sysimport mathinput = sys.stdin.readlinea, b, c = map(int, input().split())l = (c - b) / ar = (c + b) / afor _ in range(80): m = (l + r) / 2 V = a * m + b * math...
[백준 / 2166 / Python] 다각형의 면적
·
Algorithm/백준
들어가며코딩테스트에서 자주 등장하는 "다각형의 면적" 문제, 어떻게 풀어야 할지 막막했던 경험 있으신가요?오늘은 GIS, 게임 개발, CAD 등 실무에서도 널리 쓰이는 신발끈 공식(Shoelace Formula)을 활용해,백준 2166번 문제를 쉽고 빠르게 해결하는 방법을 소개합니다.문제 요약문제: N개의 꼭짓점으로 이루어진 단순 다각형의 넓이를 구하라.입력: 꼭짓점 좌표가 시계/반시계 방향으로 주어짐출력: 넓이를 소수점 첫째 자리까지 반올림예시 입력40 04 04 30 3예시 출력12.0신발끈 공식(Shoelace Formula)이란?신발끈 공식은 다각형의 꼭짓점 좌표만으로 넓이를 구할 수 있는 강력한 수학 공식입니다.이름의 유래는, 좌표를 곱해가며 더하고 빼는 모습이 신발끈을 엮는 모양과 닮았기 때문..
[암기 필요!] 코딩 테스트 필수 알고리즘 총정리: BFS, DFS, MST, 최단 경로 알고리즘
·
Algorithm/알고리즘
들어가며코딩 테스트를 준비하는 개발자라면 누구나 한 번쯤 마주치는 그래프 탐색과 최단 경로 문제. 이 글에서는 코딩 테스트에서 자주 출제되는 핵심 알고리즘들을 Python 코드와 함께 정리했습니다.💡 Tip: 이 알고리즘들은 시험장에서 바로 떠올리기 어려울 수 있으므로, 반드시 외워두시기 바랍니다.1. 그래프 탐색 알고리즘1.1 BFS (Breadth-First Search, 너비 우선 탐색)BFS는 가까운 노드부터 탐색하는 알고리즘으로, 큐(Queue) 자료구조를 사용합니다. 미로 찾기, 최단 거리 탐색 등에 자주 등장합니다.from collections import dequedef bfs(graph, start): visited = set() queue = deque([start]) ..