Algorithm16 [Algorithm] BAEKJOON 2211번. 네트워크 복구 [ 백준 2211번. 네트워크 복구 ] 문제명 : 네트워크 복구 사용언어 : python 알고리즘 : Dijkstra(다익스트라) 알고리즘, 최단경로 문제 N(1 ≤ N ≤ 1,000)개의 컴퓨터로 구성된 네트워크가 있다. 이들 중 몇 개의 컴퓨터들은 서로 네트워크 연결이 되어 있어 서로 다른 두 컴퓨터 간 통신이 가능하도록 되어 있다. 통신을 할 때에는 서로 직접 연결되어 있는 회선을 이용할 수도 있으며, 회선과 다른 컴퓨터를 거쳐서 통신을 할 수도 있다. 각 컴퓨터들과 회선은 그 성능이 차이가 날 수 있다. 따라서 각각의 직접 연결되어 있는 회선을 이용해서 통신을 하는데 걸리는 시간이 서로 다를 수 있다. 심지어는 직접 연결되어 있는 회선이 오히려 더 느려서, 다른 컴퓨터를 통해서 통신을 하는 것이 .. Algorithm 2024. 2. 20. [Algorithm] Softeer 강의실 배정 - Lv.3 (python) [ Softeer 연습문제 - 강의실 배정 ]문제명 : 강의실 배정 - (Level.3)사용언어 : python알고리즘 : 그리디 알고리즘 문제김교수는 강의실 1개에 최대한 많은 강의를 배정하려고 한다. 배정된 강의는 서로 겹치지 않아야 하며 수업시간의 길이와 상관없이 최대한 강의를 많이 배정하라. 단, 두 강의의 시작시간과 종료시간은 겹쳐도 된다. 알고리즘 및 풀이: 최대 가치를 계산하는 그리디 알고리즘을 활용하여 풀었다.이 문제에서는 강의 list를 종료 시간을 기준으로 정렬 하는 것이 포인트인 것 같다.각 강의가 종료되는 시간을 기준으로 정렬한 뒤,현재 시간과 겹치지 않는 강의 중에서 가장 빨리 끝나는 강의를 선택하는 방식으로 접근했다. import sysdef maximize_lectures(.. Algorithm 2024. 2. 2. [Algorithm] Softeer [21년 재직자 대회 예선] 회의실 예약 (python) [ Softeer 연습문제 - 회의실 예약 ] Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제명 : 회의실 예약[21년 재직자 대회 예선] 사용언어 : python 문제 회사에는 N개의 회의실이 있다. 수많은 팀이 모여 토론하고 업무를 처리하기 위해서는 회의실이 필수적이다. 내부망에 아주 간단한 회의실 예약 시스템이 있지만 편의성이 매우 떨어진다. 단순히 예약된 회의의 목록만 표시되기 때문에, 방 별로 비어 있는 시간이 언제인지를 확인하기가 힘든 것이다. 당신은 이를 직접 해결해 보기로 마음 먹었다. 회의실 이용 규칙은 다음과 같다: - 회의실은 9시부터 18시까지만 사용 가능하다. 모든 회의의 시간은 이 안에 완전히 포함되어야 한다. - 회의는 정확히 한 회의실을 연속한 일정.. Algorithm 2024. 2. 2. [Algorithm] Softeer [21년 재직자 대회 예선] 좌석관리 (python) [ Softeer 연습문제 - 좌석관리 ] Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제명 : 좌석관리 [21년 재직자 대회 예선] 사용언어 : python 문제 현대자동차그룹에서 사내 식당 매니저로 일하는 기항이는 점심시간에 맞춰 일을 하고 있다. 오늘 일은 사람들이 사회적 거리 두기를 잘 지키면서 식당 좌석에 앉도록 상황을 관리하는 일이다. 현재 식당에는 좌석 N×M개가 N행 M열로 나열되어 있는데, 각 좌석에는 (1,1)에서 (N,M)로 좌표가 배정되어 있다. x행 y열에 있는 좌석의 좌표는 (x, y)이다. 점심시간에는 많은 사람들이 식당을 드나든다. 사번이 id인 어떤 사원이 식당에 왔다면, 다음 조건에 맞춰 이 사원을 위한 좌석을 배정해 준다. 현재 K개의 좌석이 .. Algorithm 2024. 2. 1. [Algorithm] BAEKJOON 11729번. 하노이 탑 이동 순서 [ 백준 11729번. 하노이 탑 이동순서 ] 문제명 : 하노이 탑 이동순서 사용언어 : python 알고리즘 : 재귀 문제 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 1. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 2. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5개인 경우의 예시이다. 알고리즘 및 실행 코드 '하노이 탑'은 재귀를 이해하기의 대표적인 문제이다. ▽ 재귀의 핵심 정.. Algorithm 2024. 1. 30. [Algorithm] BAEKJOON 10026번. 적록색약 (python) [ 백준 10026번. 적록색약 ] 문제명 : 적록색약 사용 언어 : python3 알고리즘 : BFS(너비 우선 탐색) 문제 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록), B(파랑) 중 하나를 색칠한 그림이 있다. 그림은 몇 개의 구역으로 나뉘어 있는데, 구역은 같은 색으로 이루어져 있다. 또, 같은 색상이 상하좌우로 인접해 있는 경우에 두 글자는 같은 구역에 속한다. (색상의 차이를 거의 느끼지 못하는 경우도 같은 색상이라 한다) 알고리즘 및 코드 : 적록색약이 아닌 사람의 경우를 먼저 체크하고, 적록색약인 사람은 'R'을 'G'로 바꿔주고 G/B.. Algorithm 2024. 1. 26. [Algorithm] Softeer 장애물 인식 프로그램 (Python) [ Softeer 연습문제 - 장애물 인식 프로그램 ] Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제명 : 장애물 인식 프로그램 사용언어 : Python 알고리즘 : DFS/BFS -> 필자는 BFS 사용으로 풀이. 문제 알고리즘 및 풀이 이 문제는 이진 행렬에서 그룹의 개수와 각 그룹의 크기를 찾는 문제이다. 필자는 BFS(너비 우선 탐색) 알고리즘을 활용했다. 큐를 활용하여 한 정점에서 시작하여 인접한 정점을 탐색하는 방법으로 접근하였다. (x, y) 좌표를 순회하면서 "1"인 곳을 발견하면 해당 좌표에서 BFS를 시작하고 발견된 좌표는 방문 처리를 위해 "0"으로 바꿔준다. 이는 그룹의 크기를 측정하는 중복 방문을 방지한다. - 전역 변수 활용 : 'cnt' 변수는 그룹.. Algorithm 2024. 1. 24. [Algorithm] Softeer 조립라인 - Lv.3 (Python) [ Softeer 연습문제 - 조립라인 ] Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제명 : 조립라인 (Level.3) 사용언어 : Python 사용 알고리즘 : DP (Dynamic Programming) 문제 동일한 자동차를 생산하는 2개의 조립 라인 A와 B가 있다. 두 조립라인에는 각각 N개의 작업장이 있다. 각각의 작업장을 Ai (1 ≤ i ≤ N)와 Bi (1 ≤ i ≤ N)로 표시하자. Ai 작업장과 Bi 작업장은 동일한 작업을 수행하지만 작업시간은 다를 수 있다. A 조립 라인의 경우 A1 작업장에서 최초 조립이 시작되고, Ai 작업장에서 작업이 종료되면 바로 Ai+1 작업장에서 작업을 시작할 수 있다. B 조립 라인도 동일한 방식으로 조립을 진행한다. Ai .. Algorithm 2024. 1. 23. [Algorithm] Softeer 금고털이 - Lv.2 (Python) [ Softeer 연습문제 - 금고털이 ] Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제명 : 금고털이 사용언어 : Python 사용 알고리즘 : 그리디 알고리즘 문제 설명 루팡은 배낭을 하나 메고 은행금고에 들어왔다. 금고 안에는 값비싼 금, 은, 백금 등의 귀금속 덩어리가 잔뜩 들어있다. 배낭은 W ㎏까지 담을 수 있다. 각 금속의 무게와 무게당 가격이 주어졌을 때 배낭을 채울 수 있는 가장 값비싼 가격은 얼마인가? 루팡은 전동톱을 가지고 있으며 귀금속은 톱으로 자르면 잘려진 부분의 무게만큼 가치를 가진다. ▼ 실행 코드 ▼ import sys input = sys.stdin.readline W, N = map(int, input().split()) jewelry = [l.. Algorithm 2024. 1. 19. [Algorithm] BAEKJOON 12789번. 도키도키 간식드리미 (Python) [ 백준 12789번. 도키도키 간식드리미 ] 문제명 : 도키도키 간식드리미 사용 언어 : Python3 자료구조, STACK(스택) 문제 설명 입력 입력의 첫째 줄에는 현재 승환이의 앞에 서 있는 학생들의 수 N(1 ≤ N ≤ 1,000,자연수)이 주어진다. 다음 줄에는 승환이 앞에 서있는 모든 학생들의 번호표(1,2,...,N) 순서가 앞에서부터 뒤 순서로 주어진다. 출력 승환이가 무사히 간식을 받을 수 있으면 "Nice"(따옴표는 제외)를 출력하고 그렇지 않으면 "Sad"를 출력한다. ▼ 실행코드▼ from collections import deque N = int(input()) stu_queue = deque(map(int, input().split())) stack = deque() i = 1.. Algorithm 2024. 1. 18. [Algorithm] BAEKJOON 2504번. 괄호의 값 (Python) [ 백준 2504번. 괄호의 값 ] 문제명 : 괄호의 값 사용 언어 : Python3 주요 알고리즘 : stack(스택) 문제 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 올바른 괄호열이 아니다. 우리는 어떤 올바른 괄호열 X에 대하여 그 괄호열의 값(괄호값)을 아래와 같이 정의하고 .. Algorithm 2024. 1. 17. [Algorithm] 주차 요금 계산 - 2022 KAKAO BLIND RECRUITMENT [ 코딩테스트 연습 - 프로그래머스 Lv.2 ] 문제명 : 주차 요금 계산 [ 2022 KAKAO BLIND RECRUITMENT ] 사용 언어 : Python3 주요 사용 핵심 : dictionary를 사용하여 문제 해결. 문제 설명 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 어떤 차량이 입차된 후에 출차된 내역이 없다면, 23:59에 출차된 것으로 간주합니다. 0000번 차량은 18:59에 입차된 이후, 출차된 내역이 없습니다. 따라서, 23:59에 출차된 것으로 간주합니다. 00:00부터 23:59까지의 입/출차 내역을 바탕으로 차량별 누적 주차 시간을 계산하여 요금을 일괄로 정산합니다. 누적 주차 시간이 기본 시간이하라면, .. Algorithm 2024. 1. 16. 이전 1 2 다음 728x90