반응형

전체 글 173

[프로그래머스/LV2] 행렬 테두리 회전하기(구현)

문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 from collections import deque def solution(rows, columns, queries): answer = [] # 회전이 주어질때 바뀌는 위치의 범위 # 바꾸는 방법 : 이전 값을 다음값으로 옮기는 방법 rotate? # 범위에 있던 숫자중 가장 작은 수 # 회전할 필요 없음 -> 각 위치가 있을때, 거기서 테두리를 뽑아내는 것과 거기서 제일 작은 값..

알고리즘 2024.01.17

[BOJ/이분탐색] 2110 공유기 설치

문제링크 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net import sys # 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램 house,wifi = map(int,sys.stdin.readline().split()) houses = [] for _ in range(house): houses.append(int(sys.stdin.readline())) start = 1 houses..

카테고리 없음 2023.12.17

[프로그래머스/LV3/이분탐색] 입국검사

문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/43238#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n, times): answer = 1e18 # 모든 사람이 심사를 받는데 걸리는 시간의 최솟값 # start = mid+1 , end = mid-1 # max = max(time)*n # 30초에 모든 사람이 심사를 받을 수 있는가? # 7/14/21/28 # 10/20/30 # 모든 검색대 시간의 배수를 정렬하고, 거기서 인원수를 카운트한다 # 30//7..

알고리즘 2023.12.15

[프로그래머스/LV2/구현] 호텔 대실

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(book_time): answer = 0 book_time = sorted(book_time) while len(book_time) >= 1: nxt = book_time[0][1] book_time.pop(0) answer += 1 for i in range(len(book_time)): hour = int(book_time[0][0].split(":")..

알고리즘 2023.12.13

[프로그래머스/구현/LV1] PCCP 기출문제 1번

https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(bandage, health, attacks): answer = 0 #붕대 감기 기술의 시전 시간, 1초당 회복량, 추가 회복량을 담은 1차원 정수 배열 bandage #최대 체력을 의미하는 정수 health #몬스터의 공격 시간과 피해량을 담은 2차원 정수 배열 attacks #[5, 1, 5]30[[2, 10], [9, 15], [10, 5], [11, 5]] band..

알고리즘 2023.12.06

[프로그래머스/그래프 탐색/LV2] 무인도 여행

https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import deque def solution(maps): answer = [] dx = [-1,1,0,0] dy = [0,0,-1,1] new_map = [] for i in range(len(maps)): new_map.append(list(maps[i])) for i in range(len(new_map)): for j in range(len(new_map[0..

알고리즘 2023.12.06

[BOJ/완전탐색] 14888 연산자 끼워넣기

https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 풀이 n = int(input()) numbers = list(map(int,input().split())) cal = list(map(int,input().split())) plus = ["+"]*(cal[0]) minus = ["-"]*(cal[1]) multiple = ["*"]*(cal[2]) divide = ["/"]*(cal[3..

알고리즘 2023.09.19

[BOJ/완전탐색] 15686 치킨배달

https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 풀이 n,m = map(int,input().split()) arr = [list(map(int,input().split())) for _ in range(n)] def length(a,b): return abs(a[0]-b[0]) + abs(a[1]-b[1]) # 도시의 치킨거리 = 모든 집의 치킨거리의 합 # 치킨거리는 집부터 가장 가까운 치킨집 사이의 거리 # 도시의 치..

알고리즘 2023.09.19

[프로그래머스/Lv2] 땅따먹기(동적 프로그래밍)

https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(land): for i in range(1,len(land)): now = land[i] before = land[i-1] now[0] += max(before[1],before[2],before[3]) now[1] += max(before[2],before[3],before[0]) now[2] += max(before[1],before[3],before[0]) now..

알고리즘 2023.09.19

[BOJ/동적 프로그래밍] 14501 퇴사

https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 풀이 n = int(input()) answer = [(0,0)] for day in range(1,n+1): time, price = map(int,input().split()) answer.append((time,price)) dp = [0]*(n+1) for i in range(1,n+1): time = answer[i][0] - 1 price = answer[i][1] day = time+i # 상담을 안하는 날이면 기존값과 전날값중 큰것 비교 dp[i] = max(dp[i-1],dp[i]) if day

알고리즘 2023.09.19
반응형