FORMAT
format
format 포맷팅 : 중괄호 { }를 이용하는 방법
ex) tmp = "{ : d }".format(100)
print("int : {0}, string : {1}".format(100, "str") 처럼 변수의 타입과 상관없다
%
% 포맷팅 : %d, %s, %f 등과 함께 %를 이용하는 방법
ex) print("int : %d, string : %s" %(100, "str"))
Map
input()은 문자열로 입력을 받기 때문에 int(input())처럼 정수로 변환을 해주기도 하는데,
split()함수( : 일정 기준으로 나누어 리스트 형태로 변환)와 함께 이용할 때, int(input().split()) (X)
map함수를 이용해주며 split의 결과를 모두 해당 타입으로 변환할 수 있다.
map(int, input( ).split( ))
1. 구구단
2739번: 구구단
N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.
www.acmicpc.net
a = int(input())
for i in range(1, 10):
print("{:d} * {:d} = {:d}".format(a, i, a*i))
range(1, 10)을 이용하여 1 ~ 9까지 구구단을 출력하도록 하였다.
출력 시, format을 이용하였다.
print("%d * %d = %d" %(a, i, a*i)) 로 해주어도 된다.
2. 음계
2920번: 음계
다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8
www.acmicpc.net
asc = [1, 2, 3, 4, 5, 6, 7, 8]
des = [8, 7, 6, 5, 4, 3, 2, 1]
num = list(map(int, input().split()))
count1 = count2 = 0
for j in range(8):
if asc[j] == num[j]:
count1 += 1
elif des[j] == num[j]:
count2 += 1
if count1 == 8:
print("ascending")
elif count2 == 8:
print("descending")
else:
print("mixed")
TypeError: cannot unpack non-iterable int object
: count1, count2 = 0이라고 해주고 나온 오류. 각자 따로 선언해주거나 위에 처럼 ","가 아닌 "="로 해주기.
list(map(int, input( ).split( ))
- 공백을 기준으로 문자열 형태의 입력을 받고, 리스트 형식으로 변환 : input( ).split( )
- 리스트 요소 하나하나에 접근하여 int로 변환 : map(int, ~)
- 리스트 형식으로 변환 : list( )
3. OX퀴즈
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
a = input() #테스트 케이스의 개수
for i in range(int(a)):
test = list(input()) #OOXO와 같은 문자열을 입력받아 ['O','O','X','O']형태로 변환
score = 0
result = 0
for j in test:
if j == "O":
score += 1
result += score
elif j == "X":
score = 0
print(result)