[프로그래머스] 해시 - 의상
2023. 6. 20. 00:01
Python/Programmers
문제 설명 코니는 매일 다른 옷을 조합하여 입는것을 좋아합니다. 예를 들어 코니가 가진 옷이 아래와 같고, 오늘 코니가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야합니다. 종류이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다. 예를 들어 위 예시의 경우 동그란 안경과 검정 선글라스를 동시에 착용할 수는 없습니다. 착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산합니다. 코니는 하루에 최소 한 개의 의상은 입습니다. 코니가 가진 의..
[Python] 2869번 달팽이.. 어쩌구
2023. 6. 15. 02:16
Python/Backjoon
https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽..
[SeSAC 최종 프로젝트] Recycling and Hybrid
2023. 6. 6. 01:14
IT/AWS
프로젝트 개요 우리 팀이 생각한 AWS의 큰 장점인 오토 스케일링을 이용할 수 있는 주제를 생각해보았다. 오토 스케일링이 필요한 상황은 콘서트 예매나 수강신청과 같이 특정 시간에는 트래픽이 몰리는 상황이다. 서버가 많이 필요할 때만 오토스케일링으로 늘린 후 이벤트가 끝나면 다시 줄일 수 있기 때문이다. 여러 상황들을 고려해보다 시험기간에는 사용자가 몰리고, 방학이나 평상시에는 사용자가 감소하는 스터디카페의 예약 시스템을 생각해냈다. 처음에는 AWS만 사용할까도 고민했지만, 실제 기업에서 프로젝트 발표를 참관하는만큼 기업에서 이를 도입할 메리트를 보여줘야한다고 생각했다. 기존에 쓰고 있던 레거시 환경의 서버들을 다 버리고 클라우드로 100% 이전하는 건 기업에서는 손해이기 때문에, 온프레미스 서버와 클라우..
[SWEA] 1859번 백만장자 프로젝트
2023. 5. 19. 17:16
Python/SWEA
문제 25년 간의 수행 끝에 원재는 미래를 보는 능력을 갖게 되었다. 이 능력으로 원재는 사재기를 하려고 한다. 다만 당국의 감시가 심해 한 번에 많은 양을 사재기 할 수 없다. 다음과 같은 조건 하에서 사재기를 하여 최대한의 이득을 얻도록 도와주자. 1. 원재는 연속된 N일 동안의 물건의 매매가를 예측하여 알고 있다. 2. 당국의 감시망에 걸리지 않기 위해 하루에 최대 1만큼 구입할 수 있다. 3. 판매는 얼마든지 할 수 있다. 예를 들어 3일 동안의 매매가가 1, 2, 3 이라면 처음 두 날에 원료를 구매하여 마지막 날에 팔면 3의 이익을 얻을 수 있다. [TC1] 입력: 3 5 9 정답: 10 풀이: 첫째, 둘째 날 물건을 구입해서 셋째 날에 팔면 6 + 4 = 10의 이익을 낼 수 있다. [TC2..
병합 정렬 (Merge Sort)
2023. 5. 19. 16:18
Python
O (N*logN)의 시간복잡도 분할 정복 방법을 채택한 알고리즘 정확히 반절씩 나눈다는 점에서 최악의 경우에도 O를 보장 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요 7 6 5 8 3 5 9 1 '일단 반으로 쪼개고 나중에 합쳐서 정렬' def merge_sort(arr): if len(arr) < 2: return arr mid = len(arr) // 2 low_arr = merge_sort(arr[:mid]) high_arr = merge_sort(arr[mid:]) merged_arr = [] l = h = 0 while l < len(low_arr) and h < len(high_arr): if low_arr[l] < high_arr[h]: merged_arr.append(low..
[Python] 2839번 설탕배달 - 그리디알고리즘
2023. 5. 11. 19:44
Python/Backjoon
https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1..
[Python] 2566번 최댓값 (2차원 배열)
2023. 5. 11. 00:14
Python/Backjoon
https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 문제 과 같이 9×9 격자판에 쓰여진 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오. 예를 들어, 다음과 같이 81개의 수가 주어지면 1열2열3열4열5열6열7열8열9열1행2행3행4행5행6행7행8행9행 3 23 85 34 17 74 25 52 65 10 7 39 42 88 52 14 72 63 87 42 18 78 53 45 18 ..
[SWEA] D1 - 2063번 중간값 찾기
2023. 5. 9. 19:37
Python/SWEA
문제 중간값은 통계 집단의 수치를 크기 순으로 배열 했을 때 전체의 중앙에 위치하는 수치를 뜻한다. 입력으로 N 개의 점수가 주어졌을 때, 중간값을 출력하라. [예제] N이 9 이고, 9개의 점수가 아래와 같이 주어질 경우, 85 72 38 80 69 65 68 96 22 69이 중간값이 된다. [제약 사항] 1. N은 항상 홀수로 주어진다. 2. N은 9이상 199 이하의 정수이다. (9 ≤ N ≤ 199) [입력] 입력은 첫 줄에 N 이 주어진다. 둘째 줄에 N 개의 점수가 주어진다. [출력] N 개의 점수들 중, 중간값에 해당하는 점수를 정답으로 출력한다. 코드 n = int(input()) nums = list(map(int,input().split())) nums.sort() #sort 함수로 ..
[SWEA] D1-2071번 평균값 구하기
2023. 5. 9. 19:24
Python/SWEA
문제 10개의 수를 입력 받아, 평균값을 출력하는 프로그램을 작성하라. (소수점 첫째 자리에서 반올림한 정수를 출력한다.) [제약 사항] 각 수는 0 이상 10000 이하의 정수이다. [입력] 가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 10개의 수가 주어진다. [출력] 출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.) 코드 t = int(input()) for i in range(t): bucket = list(map(int,input().split())) avg = round(sum(bucket)/len(bucket)) print..
[Python] 에라토스테네스의 체 알고리즘 - 소수 판별
2023. 4. 26. 19:17
-
import math n = 1000 # 2부터 1,000까지의 모든 수에 대하여 소수 판별 array = [True for i in range(n + 1)] # 처음엔 모든 수가 소수(True)인 것으로 초기화 # 에라토스테네스의 체 알고리즘 for i in range(2, int(math.sqrt(n)) + 1): # 2부터 n의 제곱근까지의 모든 수를 확인하며 if array[i] == True: # i가 소수인 경우 (남은 수인 경우) # i를 제외한 i의 모든 배수를 지우기 j = 2 while i * j
[Python] 파이썬 소수점 자리 표현하기
2023. 4. 26. 19:06
-
1. round 함수를 통해서 소수점 자리수 반올림 하기 2. format 서식 지정을 통해서 소수점 자리수 조절하기 3. f-string 서식 지정을 통해서 소수점 자리수 제한하기 1. 파이썬 round 함수로 소수점 관리하기 round(반올림하고자 하는 값, 원하는 자릿수) a = round(1.23456) # 1 b = round(1.23456, 0) # 1.0 c = round(1.23456, 1) # 1.2 d = round(1.23456, 2) # 1.23 e = round(1.23456, 3) # 1.235 f = round(1.23456, 4) # 1.2346 2. 파이썬 format 서식 지정으로 소수점 관리하기 "이것을 문자열 { : .2f}".format(실수 입력) { : .2f }..
[Python] Cos pro 1급 4차 - 9번 분침과 시침의 각도 구하기
2023. 4. 26. 18:06
-
hour 시 minute 분에 아날로그 시계의 시침과 분침이 몇 도를 이루는지 계산하려 합니다. 예를 들어, 3시 00분에 시침과 분침은 90˚를 이룹니다. 어떤 시점의 시 hour, 분 minute이 매개변수로 주어질 때, hour 시 minute 분에 아날로그 시계의 시침과 분침이 이루는 각도를 소숫점 첫번째 자리까지 표현한 문자열을 return 하도록 solution 함수를 작성해주세요. --- #####매개변수 설명 어떤 시점의 시 hour, 분 minute이 solution 함수의 매개변수로 주어집니다. * hour는 1 이상 12 이하인 자연수입니다. * minute은 0 이상 59 이하인 정수입니다. --- #####return 값 설명 hour 시 minute 분에 아날로그 시계의 시침과 ..