Search

심화

print(' ,r\'\"7') print('r`-_ ,\' ,/') print(' \. \". L_r\'') print(' `~\/') print(' |') print(' |')
Python
복사
체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.
동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.
첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.
첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.
white = [1,1,2,2,2,8] now = list(map(int,input().split())) for i in range(len(white)): print(white[i] - now[i], end=' ') print()
Python
복사
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
n = int(input()) # 마름모 모양이니까 구분해서 생각하자 for i in range(1,n): # n = 5라면 1~4까지 print(' '*(n-i) + '*'*(2*i-1)) for i in range(n,0,-1): print(' '*(n-i) + '*'*(2*i-1))
Python
복사
도현이는 앞으로 M번 바구니의 순서를 회전시키려고 만들려고 한다. 도현이는 바구니의 순서를 회전시킬 때, 순서를 회전시킬 범위를 정하고, 그 범위 안에서 기준이 될 바구니를 선택한다. 도현이가 선택한 바구니의 범위가 begin, end이고, 기준이 되는 바구니를 mid라고 했을 때, begin, begin+1, ..., mid-1, mid, mid+1, ..., end-1, end 순서로 되어있는 바구니의 순서를 mid, mid+1, ..., end-1, end, begin, begin+1, ..., mid-1로 바꾸게 된다.
바구니의 순서를 어떻게 회전시킬지 주어졌을 때, M번 바구니의 순서를 회전시킨 다음, 바구니에 적혀있는 번호를 가장 왼쪽 바구니부터 출력하는 프로그램을 작성하시오.
첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다.
n,m = map(int,input().split()) base = [i+1 for i in range(n)] for i in range(m): i,j,k = map(int,input().split()) base = base[:(i-1)] + [base[k-1]] + base[k:j] + base[(i-1):(k-1)] + base[j:] for i in base: print(i, end = ' ') print()
Python
복사
알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.
팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.
level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.
첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.
a = list(input()) b = a[::-1] str1 = ''.join(a) str2 = ''.join(b) if str1 == str2: print(1) else: print(0)
Python
복사
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
n = int(input()) for i in range(n): case = list(map(int,input().split())) cnt = case[0] score = case[1:] mean = sum(score) / cnt over_cnt = 0 for i in score: if i > mean: over_cnt += 1 print('{:.3f}%'.format((over_cnt / cnt)*100))
Python
복사
ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
a = input() croatia = ['c=','c-','dz=','d-','lj','nj','s=','z='] for i in croatia: a = a.replace(i,'*') #크로아티아 알파벳을 '*' 하나로 취급 print(len(a))
Python
복사
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.
첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다.
첫째 줄에 그룹 단어의 개수를 출력한다.
answer = 0 for i in range(int(input())): word = input() if list(word) == sorted(word, key = word.find): answer += 1 print(answer)
Python
복사
 TIP
sorted() 함수는 iterable 한 데이터를 새롭게 정렬된 리스트로 반환한다.
find() 함수는 들어온 문자값의 최초 인덱스 값을 반환한다.
치훈이의 전공평점을 계산해주는 프로그램을 작성해보자.
전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다.
인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다.
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줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어진다.
rating = ['A+', 'A0', 'B+', 'B0', 'C+', 'C0', 'D+', 'D0', 'F'] grade = [4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0] total = 0 result = 0 for i in range(20): a,b,c = input().split() b = float(b) if c != 'P': total += b # 수강한 총 학점 result += b*grade[rating.index(c)] #학점*과목평점의 총합 print('%.6f'%(result / total))
Python
복사
# 딕셔너리를 활용 M = {'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} total = result = 0 for i in range(20): a,b,c = input().split() b = float(b) if c != 'P': total += b result += b*M[c] print('%.6f'%(result / total))
Python
복사