Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[03주차 정지원] 최소직사각형 #17

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/**/*
!/**/*.py
!/**/*.java
!/**/*.js
!/**/*.c
!/**/*.cpp
!/**/*.yml
Expand Down
37 changes: 37 additions & 0 deletions 01주차/정지원/solution.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
'''
문제 4796번, 캠핑 (https://www.acmicpc.net/problem/4796)

등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다.
캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다.
강산이는 이제 막 28일 휴가를 시작했다. 이번 휴가 기간 동안 강산이는 캠핑장을 며칠동안 사용할 수 있을까?
강산이는 조금 더 일반화해서 문제를 풀려고 한다.
캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. 강산이가 캠핑장을 최대 며칠동안 사용할 수 있을까? (1 < L < P < V)

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다.

예제 입력:
5 8 20
5 8 17
0 0 0
'''

lpv_list = []

while True: # 0 0 0이 나오기 전까지 계속해서 다음 줄 입력을 받음. l, p, v에 차례로 저장
l, p, v = map(int, input().split(' '))
if l == 0 and p == 0 and v == 0:
break
else:
lpv_list.append([l, p, v]) # l, p, v를 lpv_list에 2차원 리스트 형태로

for idx, lpv in enumerate(lpv_list): # enumerate() 내장 함수를 사용해 index, lpv를 가져옴
l = lpv[0]; p = lpv[1]; v = lpv[2]
count = 0
while v - p > 0: # 총 휴가일수 - 연속일자 p가 0이 될 때까지, (그리디)
v -= p # v -= p를 반복한다.
count += l # 사용할 수 있는 기간만큼을 count에 추가한다.
if v > l: # 남은 휴가일수가 사용 기간보다 크다면 사용 기간을 더하고,
count += l
else: # 사용 기간이 더 길다면 남은 휴가일수를 더한다. (종료)
count += v
print(f'Case {idx + 1}: {count}') # while 루프를 통과한 테스트 케이스를 출력한다.
13 changes: 13 additions & 0 deletions 02주차/정지원/sol.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
def solution(numbers, target):
idx = 0
current = 0

def dfs(list_of_nums, target_num, current_num, current_idx):
if current_idx == len(list_of_nums):
return 1 if current_num == target_num else 0

# 현재 상황에서 숫자를 빼거나 더하여 재귀함수 호출
return dfs(list_of_nums, target_num, current_num + list_of_nums[current_idx], current_idx + 1) + dfs(list_of_nums, target_num, current_num - list_of_nums[current_idx], current_idx + 1)

result = dfs(numbers, target, current, idx)
return result
10 changes: 10 additions & 0 deletions 03주차/정지원/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
function solution(sizes) {
let maxW = 0;
let maxH = 0;
sizes.forEach((element) => {
element.sort((a, b) => a - b);
if (element[0] > maxW) maxW = element[0];
if (element[1] > maxH) maxH = element[1];
});
return maxW * maxH;
}
Loading