썸네일 [PYTHON] 5622 다이얼 - dictionary로 푸는법/ list로 푸는법 https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 문제 풀이 숫자 1이 2초가 걸리기 때문에 숫자 2는 3초가 걸린다. 숫자 2부터 문자가 시작이고 문자를 배열에 담을거니깐 index는 0이다. 결론은 숫자 2는 index가 0이고 3초가 걸리고 'ABC' 를 의미하므로 딕셔너리를 만들러 key로는 문자를 넣고 value값으로 초를 넣어 계산한다. index+3을 해주어 초를 계산해준다. 입력값 문자를 받아 딕셔너리의 key값에 들어있으면 value값인 초를 누적합하여 최종 걸린 시간을 출력해준다. solution import s..
썸네일 [PYTHON] 4344 평균은 넘겠지 f-string으로 %,부동소수점,n번째 자리까지 출력하기 https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net solution import sys t = int(sys.stdin.readline().strip()) for _ in range(t): data = list(map(int, sys.stdin.readline().strip().split())) N = data[0] score_list = data[1:] mean_score = sum(score_list)/N cnt = 0 for score in score_list: if score > mean_score : # 평균보다 점..
썸네일 [PYTHON] 10818 최소 최대 min,max/for https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 풀이 내장함수 사용하여 최솟값과 최댓값을 출력한다. solution 1 - min(),max() import sys N = sys.stdin.readline().strip() N_list = list(map(int, sys.stdin.readline().strip().split())) print(min(N_list),max(N_list)) solution ..
썸네일 [PYTHON] 10952 A+B -5 https://www.acmicpc.net/problem/10952 10952번: A+B - 5 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제풀이 while문을 통해 계속 테스트 케이스를 공백을 구분하여 A와 B를 입력 받는다. 단, A와 B가 0인 경우 프로그램을 종료한다. (종료 조건) A > 0 , B > 10 이기때문에 A와 B가 0일때 빼곤 이 둘의 합이 0인 경우는 없다. 종료되지 않으면 A와 B의 합을 출력한다. solution import sys while True : # 계속해서 입력받는다. A,B = list(map(int, sys.stdin.readline().strip().split())) if A+B ==0 : # 단..
썸네일 [PYTHON] 1110 더하기사이클 while https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 문제 풀이 N의 일의 자리가 십의 자리가 되고 N의 합의 일의 자리가 일의 자리가 된다. 예를 들어 N = 26이라면 N = 26 => 2 + 6 = 8 N = 68 => 6 + 8 = 14 N = 84 => 8 + 4 = 12 N = 42 => 4 + 2 = 6 N = 26 N이 이러한 루프를 통해 원래 수까지 돌아오는 횟수를 출력하면 된다. solution import sys N..
썸네일 [PYTHON]4673 셀프넘버 set()/중복제거/차집합/합집합/교집합 https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 문제 풀이 d(1) = 1 + 1 = 2 d(2) = 2 + 2 = 4 d(3) = 3 + 3 = 6 ⋮ d(123) = 123 + 1 + 2 + 3 ⋮ d(10000) = 10000 + 1 = 10001 1부터 10000까지의 n을 넣은 d(n)의 값을 set()에 넣고 중복을 제거해준다. 1부터 10000까지 담아 있는 숫자 리스트와 중복을 제..
썸네일 [PYTHON] 10871 X보다 작은 수 list comprehension https://www.acmicpc.net/problem/10871 10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 풀이 X와 수열 A를 입력받아 for문을 돌린다. 만약 수열 A의 요소가 X보다 작다면 빈 배열에 담는다. 배열을 언패킹(*)해주어 출력한다. solution import sys _, X = map(int, sys.stdin.readline().strip().split()) A_list = list(map(int, sys.stdin.readline().strip().split..
comprehension 오늘은 comprehension에 대해 공부했습니다. 매번 for문을 돌려 조건에 해당되면 빈 배열에 추가하는 식으로 코드를 짜다가 빈 배열을 만들지 않고 바로 리스트 형태로 반환하는 문법을 찾았습니다. 하지만 간결한만큼 가독성이 떨어진다는 단점도 함께 공부했습니다. comprehension list,dictionary,set, generator comprehension이 있다. 코드가 간결하다 반복문으로 빈 배열을 만들고 추가하는 것 보다 속도가 빠르다. 새로운 배열을 만들때 유용하다. 하지만 가독성이 떨어진다는 단점이 있다 List Comprehension 표현식과 제어문을 통해 특정한 값을 가진 리스트를 간결하게 생성하는 방법 [표현식 for 변수 in iterable] [표현식 for 변수 in ..
썸네일 [PYTHON] 25304 영수증 https://www.acmicpc.net/problem/25304 25304번: 영수증 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것 www.acmicpc.net 문제 풀이 2번째 줄 input값인 물건의 종류의 수만큼 반복해서 물건의 가격과 개수를 입력받는다. 물건의 가격과 개수를 곱해 모두 더한 다음 1번째 줄의 총 금액과 맞는지 if문으로 확인한다. 맞으면 'Yes', 틀리면 'No'를 출력한다. solution import sys x = int(sys.stdin.readline()) n = int(sys.stdin.readline()) sum = 0 for ..
썸네일 [PYTHON] 10950 A+B -3 for_in에서 _의 의미 https://www.acmicpc.net/problem/10950 10950번: A+B - 3 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 풀이 첫째 줄에 몇 개를 입력받을지 개수를 입력받는다. 두 번째 줄부터 공백으로 구분하여 A와 B를 입력받는다. 첫 번째 입력값인 테스트 케이스 개수 만큼 반복하여 A와 B를 입력받아 더하고 출력해준다. solution import sys case_num = int(sys.stdin.readline()) for _ in range (case_num) : x,y = map(int, sys.stdin.readline().strip().split(' ')) print(x+y) 새롭게 배운 점 for _ i..
썸네일 [PYTHON] 2480 주사위 세개 https://www.acmicpc.net/problem/2480 2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개 www.acmicpc.net 문제 해석 같은 수 3개면 10000 + 같은 수 * 1000 같은 수 2개면 1000 + 같은 수 * 100 모두 다른 수이면 그 중 가장 큰 수 * 100 solution import sys a,b,c = map(int, sys.stdin.readline().strip().split(' ')) if a == b and b == c : print(10000 + a * 1000) e..
썸네일 [PYTHON] 2525 오븐시계 https://www.acmicpc.net/problem/2525 2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.) www.acmicpc.net 문제 풀이 첫 번째 줄에서 받은 시간과 분을 받고 두 번째에서 받은 요리에 필요한 시간받아 요리 후의 시각을 출력한다. solution import sys hour, min = map(int, sys.stdin.readline().strip().split(' ')) cook_min = int(sys.stdin.readline().strip()) # 현재 요리 시간과 요리에 필요한 시간..