문제 **《할리갈리》**는 단추가 달린 종 하나와 과일이 그려진 카드들로 구성된 보드게임입니다. 카드에는 총 4$4$종류의 과일이 최대 5$5$개까지 그려져 있습니다. 그려진 과일의 종류는 딸기, 바나나, 라임, 그리고 자두입니다. 게임을 시작할 때 플레이어들은 카드 뭉치를 공평하게 나눠가지며 자신이 가진 카드를 전부 소모하면 패배합니다. 게임은 시작 플레이어가 본인의 카드 뭉치에서 카드 한 장을 공개하는 것으로 시작합니다. 이후 반시계 방향으로 돌아가며 본인의 카드를 한 장씩 공개합니다. 펼쳐진 카드들 중 한 종류 이상의 과일이 정확히 5$5$개 있는 경우 종을 눌러야 하며 가장 먼저 종을 누른 플레이어가 모든 카드를 모아 자신의 카드 뭉치 아래에 놓습니다. 종을 잘못 누른 경우 다른 모든 플레이어에게..
분류 전체보기
문제 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다. 출력 첫째 줄에 단어의 개수를 출력한다. 예제 입력 1 The Curious Case of Benjamin Button 예제 출력 1 6 예제 입력 2 The first character is a blank 예제 출력 2 6 예제 입력 3 The last charac..
set()을 사용하기 ls = [1, 2, 3] newSet = set(ls) print(newSet) # 출력 # {1, 2, 3} Set Comprehension 사용하기 ls = [1, 2, 3] newSet = {x for x in my_list} print(newSet) # 출력 # {1, 2, 3} unpacking 연산자 사용하기 ls = [1, 2, 3] newSet = {*ls} print(newSet) # 출력 # {1, 2, 3}
break 반복문을 중단하고 싶을때 사용함. 모든 반복문을 중단하는것이 아닌 가장 가까운 반복문에서만 나온다. for i in range(1, 10): if i == 5: break print(i) # 출력 # 1 # 2 # 3 # 4 coutinue 해당 루프만 즉시 종료하고 다음 루프를 실행시키고 싶을때 사용한다. (=건너뛰기) for i in range(1, 10): if i % 2 == 0: # 짝수이면 건너뛰기 continue print(i) # 출력 # 1 # 3 # 5 # 7 # 9 pass 어떠한 명령문도 수행하지 않고 그냥 넘어가고 싶을때 사용하는 키워드. 파이썬에서는 조건문 내부에 명령문이 하나라도 존재하지 않으면 에러가 발생한다. 나중에 코드를 추가할 계획이거나 예외가 발생했을때 처리..
문제 시골에 있는 태양이의 삼촌 댁에는 커다란 참외밭이 있다. 문득 태양이는 이 밭에서 자라는 참외가 도대체 몇 개나 되는지 궁금해졌다. 어떻게 알아낼 수 있는지 골똘히 생각하다가 드디어 좋은 아이디어가 떠올랐다. 유레카! 1m2의 넓이에 자라는 참외 개수를 헤아린 다음, 참외밭의 넓이를 구하면 비례식을 이용하여 참외의 총개수를 구할 수 있다. 1m2의 넓이에 자라는 참외의 개수는 헤아렸고, 이제 참외밭의 넓이만 구하면 된다. 참외밭은 ㄱ-자 모양이거나 ㄱ-자를 90도, 180도, 270도 회전한 모양(┏, ┗, ┛ 모양)의 육각형이다. 다행히도 밭의 경계(육각형의 변)는 모두 동서 방향이거나 남북 방향이었다. 밭의 한 모퉁이에서 출발하여 밭의 둘레를 돌면서 밭경계 길이를 모두 측정하였다. !https:..
문제 인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치훈이의 전공평점을 계산해주는 프로그램을 작성해보자. 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다. 인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다. A+ 4.5 A0 4.0 B+ 3.5 B0 3.0 C+ 2.5 C0 2.0 D+ 1.5 D0 1.0 F 0.0 P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다. 과연 치훈이는 무사히 졸업할 수 있을까? 입력 20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로..
문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. 예제 입력 1 1 예제 출력 1 1/1 예제 입력 2 2 예제 출력 2 1/2 예제 입력 3 3 예제 출력 3 2/1 예제 입력 4 4..
문제 오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. 출력 첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다. 예제 입력 1 1 1 예제 출력 1 MON 예제 입력 2 3 14 예제 출력 2 WED 예제 입력 3 9 2 예제 출력 3 SUN 예제 입력 4 12 25 예제 출력 4 TUE x, y = map(int, i..
문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. 예제 입력 1 5 예제 출력 1 * * ** ** *** *** **** **** ********** **** **** *** *** ** ** * * n = int(input()) for i in range(1, n+1): print('*' * i + ' ' * ((n - i) * 2) + '*' * i) for j in range(1, n): print('*' * (n - j) + ' ' * j * 2 + '*' * (n - j)) https://www.acmicpc.net/problem/2445 2445번: 별 찍기 - 8 ..
문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\\$%*+-./: 이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력 각 테스트 케이스에 대해 P를 출력한다. 예제 입력 1 2 3..