그리디

알고리즘/BOJ

[백준/파이썬] 30023번 전구 상태 바꾸기

문제 주소: https://www.acmicpc.net/problem/30023 30023번: 전구 상태 바꾸기 $N$개의 전구가 일렬로 세워져 빛나고 있다. 각각의 전구는 빨간색, 초록색, 파란색 중 하나의 색으로 빛나고 있다. 지원이는 $N$개의 전구 중 연속한 세 전구를 선택한 후에 그 전구들의 상태를 www.acmicpc.net 문제 해석 문제 풀이 전구를 시작 색의 경우의 수는 3가지이다. 0122의 전구가 존재한다면 1. 012 2. 120 3. 201 다음의 경우의 수를 시작으로 0번째 전구와 동일하도록 끝까지 전구의 상태를 변경하여, 조건에 맞는다면 최솟값을 갱신해나간다. 문제 코드 import sys input = sys.stdin.readline # input n = int(input(..

알고리즘/프로그래머스

[프로그래머스 / 파이썬] 2023 KAKAO BLIND RECRUITMENT 미로 탈출 명령어

프로그래머스에 존재하는 연습 문제이다. 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해석 미로크기 n, m 시작 좌표 x, y 목적 좌표 r, c 이동 거리 k가 주어진다. 이동 방향은 상하좌우 4방향이며, 이동하는 경우 각각 u, d, l, r 명령어를 사용하게 된다. 시작 좌표로부터 도착 좌표까지 주어진 k의 이동거리는 일치해야 한다. 이때 이동하는 명령어가 사전순으로 가장 빠른 명령어가 될 경우를 반환하는 문제이다. ..

알고리즘/프로그래머스

[프로그래머스 / 파이썬] 2023 KAKAO BLIND RECRUITMENT 택배 배달과 수거하기

https://school.programmers.co.kr/learn/courses/30/lessons/150369 문제 해석 거리가 1 ~ n + 1에 각각 집이 존재한다. 택배 상자를 담을 수 있는 최대 값이 정해진다. 해당 집에 배달할 박스와 수거할 박스가 주어진다. 배달할 박스와 수거할 박스를 모두 가져올 최소의 거리를 구하는 문제이다. 문제 풀이 최소의 경로를 도달하기 위해서는 가장 먼 집의 경우부터 해결해 주어야한다. 가장 먼 집부터 탐색하면 배달할 박스와 수거할 박스를 구분할 필요가 없다. 따라서 그리디하게 문제를 해결할 수 있다. > 실패한 방법 (시간 초과) 처음에는 가장 먼 집부터 차례로 cap 값만큼 줄이고, 남은 상자를 추가로 다음 도달할 집에 줄여가며 구현을 했다. 하지만 n^2의..

알고리즘/BOJ

[백준/파이썬] 1700번 멀티탭 스케줄링

https://www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 문제 & 테스트 케이스 문제 해석 준규는 N개를 꼽을 수 있는 멀티탭에 전기용품을 꽃아 사용한다. K번 전기용품을 순서대로 사용할 때 전기용품의 플러그를 최소로 뽑는 횟수를 구하는 문제이다. 코드 n, k = map(int, input().split()) arr = [0] + list(map(int, input().split())) # 몇 번 이후에 도착하는지 체크하는 배열 visit = [[fl..

알고리즘/BOJ

[백준/파이썬] 14222번 배열과 연산

https://www.acmicpc.net/problem/14222 14222번: 배열과 연산 연산을 적용해서 1부터 N까지의 수가 모두 하나씩 있는 배열을 만들 수 있으면 1을, 없으면 0을 출력한다. www.acmicpc.net 문제 해석 n크기의 배열에 k만큼 수를 더하는 연산이 가능하다. 위의 연산을 통해 1~n까지 모든 수가 1개씩 존재하는 배열을 만들 수 있는지 출력하라. 코드 n, k = map(int, input().split()) arr = sorted(list(map(int, input().split())), reverse = True) check = [0] * (n + 1) for i in range(n): s = 0 temp = arr[i] while arr[i] + s * k 머리..

알고리즘/BOJ

[백준/파이썬] 13164번 행복 유치원

https://www.acmicpc.net/problem/13164 13164번: 행복 유치원 입력의 첫 줄에는 유치원에 있는 원생의 수를 나타내는 자연수 N(1 ≤ N ≤ 300,000)과 나누려고 하는 조의 개수를 나타내는 자연수 K(1 ≤ K ≤ N)가 공백으로 구분되어 주어진다. 다음 줄에는 원생들 www.acmicpc.net 문제 해석 유치원생들이 내림차순의 키 순서대로 주어진다. 유치원들은 1명 이상으로 조를 구성할 수 있을 때 k개 이하의 조를 구성할 때, 해당 조원의 키차이만큼 티셔츠를 맞추는 비용이 소모된다. 비용이 최소가 되는 값을 구하는 문제이다. 코드 input = __import__('sys').stdin.readline n, k = map(int, input().split()) ..

알고리즘/BOJ

[백준/파이썬] 19590번 비드맨

https://www.acmicpc.net/problem/19590 19590번: 비드맨 구슬을 엄청 좋아하는 비드맨이 있다. 구슬만 보면 갖고 싶어 하는 비드맨은 오늘도 갖고 싶은 구슬을 발견했다. 그러나 비드맨은 현재 구슬을 너무 많이 갖고 있기 때문에 더 이상 구슬을 가질 www.acmicpc.net 문제 해석 n개의 종류의 구슬의 갯수가 주어진다. 종류가 서로 다른 구슬 2종류를 부딪혀 구슬을 깨뜨릴 수 있다. 구슬을 서로 부딪혀 최소로 남개되는 구슬의 수를 구하여라. 코드 input = __import__('sys').stdin.readline n = int(input()) arr = [] for _ in range(n): arr.append(int(input())) _max = max(arr)..

알고리즘/BOJ

[백준/파이썬] 16953번 A → B

https://www.acmicpc.net/problem/16953 문제 해석 정수 A를 B로 바꾸는 문제이다. 가능한 연산은 2를 곱하거나, 가장 오른쪽에 1을 추가한다. 코드 input = __import__('sys').stdin.readline a, b = map(int, input().split()) cnt = 1 # a -> b 가 아닌 b -> a 로 가면서 가능한지 확인 # 즉 2로 나눌수 있다면 나누고, 나눌 수 없는 1 이 있는 경우엔 1을 제거하고 // 10 을 통해 b -> a # 1이 아닌 홀수가 온다면 만들 수 없음. while 1: # 정답이라면 출력 if a == b: print(cnt) exit(0) # 1이라면 더이상 답을 구할 수 없으므로 -1 if b == 1: pri..

알고리즘/BOJ

[BOJ/python] 1339번 단어 수학

https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 문제 해석 대문자 알파벳으로 이루어진 단어가 N개 주어진다. 해당 알파벳의 종류는 10개 이하이며 같은 알파벳은 같은 숫자를 대입할 때, 주어진 알파벳을 모두 더해 가장 큰 수가 나오는 값을 구하는 문제이다. 코드 input = __import__('sys').stdin.readline n = int(input()) # 아스키 코드로 변환해 해당 값에 크기를 저장한 배열 arr = [0] *..

알고리즘/BOJ

[BOJ/python] 1439번 뒤집기

https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 문제 해석 0과 1로 이루어진 문자열이 주어진다. 해당 문자열에서 연속된 문자열을 뒤집어서 1 또는 0으로만 이루어진 문자열을 만드는 뒤집는 최소 횟수를 구하는 문제이다. 코드 input = __import__('sys').stdin.readline s = input().strip() ans = 0 flag = s[0] for i in range(1, len(s)): if flag == s[i]:..

ddingmin00
'그리디' 태그의 글 목록