알고리즘(13)
-
[프로그래머스] 삼각 달팽이 (Python)
https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n): arr = [[0] * n for i in range(n)] x,y=-1,0 a=1 for i in range(n): for j in range(i,n): if i % 3 == 0: x+=1 elif i % 3 == 1: y+=1 elif i % 3 ==2: x-=1 y-=1 arr[x][y] = a a +=1 answer=[] for i in arr: for j i..
2023.06.08 -
[백준] 1463번 : 1로 만들기 (Python)
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net X= int(input()) dp = [0] * (X+1) for i in range(2,X+1): dp[i] = dp[i-1] + 1 if i % 2 == 0: dp[i] = min(dp[i], dp[i//2]+1) if i % 3 == 0: dp[i] = min(dp[i], dp[i//3] + 1) print(dp[X])
2023.06.08 -
[백준] 19941번 : 햄버거 분배 (Python)
https://www.acmicpc.net/problem/19941 19941번: 햄버거 분배 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사 www.acmicpc.net 💡 문제 접근 최대한 왼쪽에 있는 햄버거를 우선적으로 먹어야함 햄버거 먹으면 다른 문자로 바꿔주기 💡 내 코드 # 햄버거 분배 n,k = map(int,input().split()) hp =list(input()) cnt=0 for i in range(n): for j in range(i-k,i+k+1): # 거리 안에 있는 햄버거 찾기 if hp[i]=='P': # 현재 위치가 사람일때 if ..
2023.03.16 -
[백준] 20115번 : 에너지 드링크 (Python)
https://www.acmicpc.net/problem/20115 20115번: 에너지 드링크 페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한 www.acmicpc.net 💡 내 코드 n = int(input()) k = list(map(int,input().split())) k = sorted(k, reverse=True) cnt = k[0] for i in range(1,n): cnt += (k[i]/2) print(str(cnt).rstrip('0').rstrip('.')) 💡 주의 소수점 불필요한 0 없애기
2023.03.16 -
[백준] 20300번 : 서강근육맨 (Python)
https://www.acmicpc.net/problem/20300 20300번: 서강근육맨 PT 첫째 날에 $1$과 $4$를 선택하고, 둘째 날에 $2$와 $3$을 선택하고, 마지막 날에 $5$를 선택하면 $M$은 $5$가 되며, 이때가 $M$이 최소일 때이다. www.acmicpc.net 💡 문제 접근 운동기구가 짝수일 때와 홀수일 때를 각각 생각해야함 짝수일 때는 가장 작은 값과 큰 값을 짝지어서 더해주고 홀수일 때는 가장 큰 값을 혼자 두기 💡 내 코드 # 서강근육맨 n = int(input()) m= list(map(int,input().split())) m= sorted(m) # 기구 근손실 작은 값부터 정렬 result= [] if n % 2 ==0: # 운동기구 수 짝수일 때 j = n-1..
2023.03.16 -
[백준] 11508번 : 2+1 세일 (Python)
https://www.acmicpc.net/problem/11508 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 💡 문제 접근 최대한 비싼 것을 할인 받으면 최소 금액을 계산할 수 있음 비싼 순으로 정렬하기 모든 가격을 더한뒤 할인 가격 빼주기 💡 내 코드 n = int(input()) m = [int(input()) for i in range(n)] m=sorted(m,reverse=True) # 비싼 것 순으로 정렬 #일단 모든 값을 계산 sum = 0 for i in m: sum += i #..
2023.03.15 -
[백준] 1758번 : 알바생 강호 (Python)
https://www.acmicpc.net/problem/1758 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같 www.acmicpc.net 💡 문제 접근 팁이 비싼 순으로 정렬하여 계산 💡 내 코드 n = int(input()) tip = [int(input()) for i in range(n)] tip.sort(reverse = True) cnt=0 idx=0 for i in tip: idx += 1 t= i -(idx-1) if t< 0: continue cnt += t print(cnt)
2023.03.15 -
[백준] 13305번 : 주유소 (Python)
https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 💡 문제 접근 가장 싼 주유소를 찾아야 함 이외에는 당장 가야 할 거리만큼만 계산함 => 아이디어 오류, 가장 싼 주유소가 아니라도 현재가 미래의 주유소들보다 싸다면 미리 구매해야 함 💡 해결 이동하면서 최저 주유소 값을 갱신 해줌 💡 내 코드 n = int(input()) d = list(map(int, input().split())) m = list(map(int, input()..
2023.03.15