22.10 심사 문제 : 2의 거듭제곱 리스트 생성하기
문제 : 표준 입력으로 정수 두 개가 입력됩니다(첫 번째 입력 값의 범위는 1~20, 두 번째 입력 값의 범위는 10~30이며 첫 번째 입력 값은 두 번째 입력 값보다 항상 작습니다). 첫 번째 정수부터 두 번째 정수까지를 지수로 하는 2의 거듭제곱 리스트를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 단, 리스트의 두 번째 요소와 뒤에서 두 번째 요소는 삭제한 뒤 출력하세요. 출력 결과는 리스트 형태여야 합니다.
정답 :
a, b = map(int, input().split())
temp = [i for i in range(a, b + 1)]
list = [2 ** i for i in temp if not (i == temp[1] or i == temp[-2])]
print(list)
23.7 심사문제 : 지뢰 찾기
문제 : 표준 입력으로 2차원 리스트의 가로(col)와 세로(row)가 입력되고 그다음 줄부터 리스트의 요소로 들어갈 문자가 입력됩니다. 이때 2차원 리스트 안에서 *는 지뢰이고. 은.은 지뢰가 아닙니다. 지뢰가 아닌 요소에는 인접한 지뢰의 개수를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다).
정답 :
col_, row_ = map(int, input().split())
martix = []
for i in range(row_):
martix.append(list(input()))
for i in range(len(martix)):
print(martix[i])
mine = [[0 for i in range(row_)] for i in range(col_)] # 번호 표시할 리스트
for i in range(len(martix)):
for j in range(len(martix[i])):
if not (martix[i][j] == '*'):
for k in range(i - 1, i + 2):
for l in range(j - 1, j + 2):
if k >= 0 and k < row_ and l >= 0 and l < col_:
if martix[k][l] == '*':
mine[i][j] += 1
else:
mine[i][j] = '*'
for i in range(len(mine)):
for j in range(len(mine[i])):
print(mine[i][j], end='')
print()
24.5 심사 문제 : 특정 단어 개수 세기
문제 : 표준 입력으로 문자열이 입력됩니다. 입력된 문자열에서 'the'의 개수를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 단, 모든 문자가 소문자인 'the'만 찾으면 되며 'them', 'there', 'their' 등은 포함하지 않아야 합니다.
정답 :
text = input().replace('.', ' ').replace(',', ' ').split()
count = 0
for i in range(len(text)):
if len(text[i]) == 3:
count += text[i].count('the')
print(count)
24.6
문제 : 표준 입력으로 물품 가격 여러 개가 문자열 한 줄로 입력되고, 각 가격은 ;(세미콜론)으로 구분되어 있습니다. 입력된 가격을 높은 가격순으로 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 이때 가격은 길이를 9로 만든 뒤 오른쪽으로 정렬하고 천단위로 ,(콤마)를 넣으세요.
정답 :
price = sorted(list(map(int, input().split(';'))), reverse=True)
for i in range(len(price)):
print('%9s' % format(price[i], ','))