코드업 python 100제 풀이 완료! 6001~ 6098번까지 완료!
기초부터 처음부터라는 마음으로 시작했는데 너무 좋은 선택이었다. 쉬운 문제부터 내 기준 어려운 문제까지 푸니 자신감이 생기는 느낌이다
"C:\Download\'hello'.py" 를 출력한다.
print("\"C:\\Download\\'hello'.py\"")
'-'를 제외한 주민번호 13자리를 모두 붙여 출력한다.
#000907-1121112
str = input()
arr=[]
num = [0,1,2,3,4,5,6,7,8,9]
for i in str:
try:
if int(i) in num:
arr.append(int(i))
except:
pass
for k in arr:
print(k, end="")
a, b = input().split('-') #나누기
print(a,b,sep='')
10진수를 입력받아 16진수(hexadecimal)로 출력해보자.
a = int(input())
print('%x' %a) #16진수로 출력하기.
%x
: 10진수를 16진수(hexadecimal)의 소문자로 출력%o
: 10진수를 8진수(octal)로 출력.문자 1개를 입력받아 그 다음 문자를 출력해보자.
영문자 'A'의 다음 문자는 'B'이고, 숫자 '0'의 다음 문자는 '1'이다.
a = input()
b = ord(a) + 1
print(chr(b))
ord()
: 문자(아스키코드) -> 정수chr()
: 정수 -> 문자(아스키코드)실수 2개(f1, f2)를 입력받아
f1 을 f2 로 나눈 값을 출력해보자. 이 때 소숫점 넷째자리에서 반올림하여 무조건 소숫점 셋째 자리까지 출력한다.
n1, n2 = map(float,input().split())
print("%.3f" %round((n1/n2),4)) #출력형태 , 반올림하기
n1, n2 = map(float,input().split())
num= n1/n2
print("%.3f" %num) # 소수점 넷째자리에서 반올림되어서 출력.
"%.3f"
은 출력형태 즉 소수점 밑 세자리까지 출력. 이때 출력하려는 수 뒷자리에서 즉 넷째자리에서 반올림되어서 출력됨. %round(값,4)
는 소수점 밑 넷째짜리까지 출력. 이때 즉 다섯번째 자리에서 반올림되어서 출력됨.입력된 두 정수(a, b) 중 큰 값을 출력하는 프로그램을 작성해보자.
단, 3항 연산을 사용한다.
a, b = map(int,input().split())
#3항 연산자 사용하기
x = a if (a>=b) else b
print(x)
- 3항 연산자 :
x if C else y
- C : True 또는 False 를 평가할 조건식(conditional expression) 또는 값
- x : C의 평가 결과가 True 일 때 사용할 값
- y : C의 평가 결과가 True 가 아닐 때 사용할 값
0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.
n=1 #처음 조건을 통과하기 위해 0이 아닌 수 넣기.
while n!=0: #0이 아닐때만 실행
n = int(input())
if n==0:
break
else:
print(n)
영문 소문자(a ~ z) 1개가 입력되었을 때,
a부터 그 문자까지의 알파벳을 순서대로 출력해보자.
# ord : 문자 -> 아스키코드
s = ord(input()) # 97 ~ 122 (a~z)
fisrt_a = ord('a') # 97
while fisrt_a<=s: #s의 아스키코드와 같거나 작기 전까지
print(chr(fisrt_a)) #97-> str
fisrt_a+=1
ord
), a의 아스키코드를 선언해준다음에 a부터 문자까지의 알파벳을 출력. 출력할때는 아스키코드가 아닌 문자를 출력해야 하므로(chr
)사용. 정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자.
n = int(input())
arr = []
for i in range(n+1):
if i % 2==0:
arr.append(i)
print(sum(arr))
n = int(input())
sum = 0
for i in range(n+1):
if i % 2==0:
sum = sum +i
print(sum)
1, 2, 3 ... 을 계속 더해 나갈 때,
그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지만
계속 더하는 프로그램을 작성해보자.
n = int(input()) # 정수입력
i=0
sum=0
while 1: #True
sum = sum + i
i+=1
if(sum>=n): # 55 >= 10
break
print(i-1)
A, B, C, D, E, F 중 하나가 입력될 때,
1부터 F까지 곱한 16진수 구구단의 내용을 출력해보자.
(단, A ~ F 까지만 입력된다.)
n = int(input())
#16진수로 출력 형태:
#print("%X" %n)
n = int(input(),16) #10진수를 6진수로 변환.
for i in range(1,16):
print("%X*%X=%X" %(n,i,n*i)) #16진수형태로 출력.
빨강(r), 초록(g), 파랑(b) 각 빛의 가짓수가 주어질 때,
주어진 rgb 빛들을 섞어 만들 수 있는 모든 경우의 조합(r g b)과 만들 수 있는 색의 가짓 수를 계산해보자.
r,g,b = map(int,input().split())
count=0;
for i in range(r):
for j in range(g):
for k in range(b):
print('%d %d %d' %(i,j,k))
count+=1
print(count)
어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(sequences)이라고 한다.
....
이런 이상한 수열을 알게 된 영일이는 또 궁금해졌다.
"그럼.... 13번째 나오는 수는 뭘까?"
#시작, 곱할 값, 더할 값.
a, m, d, n = map(int,input().split())
total=a
for i in range(1,n): #n번째.
total=total*m+d
print(total)
자! 여기서...잠깐..
같은 날 동시에 가입한 3명의 사람들이 온라인 채점시스템에 들어와 문제를 푸는 날짜가
매우 규칙적이라고 할 때, 다시 모두 함께 문제를 풀게 되는 그날은 언제일까?
#최소공배수 이용.
a, b, c = map(int, input().split())
n = max(a, b, c) #최대값이 9라면,
cnt = n
while True:
if (n % a == 0) and (n % b == 0) and (n % c == 0):
print(n)
break
n += cnt # 가장 큰 수의 배수로 돌리기. 9+9+9+,,,,순
이상한 출석 번호 부르기1
n = int(input())
arr = list(map(int,input().split()))
arr.reverse() #리스트자체가 덮어씌어짐.
for i in arr:
print(i, end=" ")
reverse()
이 함수는 리스트 자체가 덮어씌어진다.이상한 출석 번호 부르기2
#reverse 사용.
n = int(input())
arr = list(map(int,input().split()))
arr.reverse() #리스트자체가 덮어씌어짐.
for i in arr:
print(i, end=" ")
#reverse 사용 안 하기
n = int(input())
arr = list(map(int,input().split())) # 리스트 만들기
arr2=[]
for i in range(n,0,-1): # 시작, 끝, 스텝
arr2.append(arr[i-1]) #arr[0]부터 시작해서. 헷갈리면 그려보기
for k in arr2:
print(k,end=" ")
reverse()
를 사용하지 안하고도 풀었는데, range
에서 시작,끝,스텝을 설정할때 스텝을 -1로 설정하면된다.바둑판(19 * 19)에 n개의 흰 돌을 놓는다고 할 때,
n개의 흰 돌이 놓인 위치를 출력하는 프로그램을 작성해보자.
# 1. #바둑판만들기
arr = []
for i in range(20):
arr.append([]) # 리스트 안에 20개의 리스트 만들기
for k in range(20):
arr[i].append(0)
# 좌표 받기 -> 각각의 좌표는 1로 바꾸기
n = int(input())
for i in range(n):
x,y = input().split()
arr[int(x)][int(y)] = 1 # 2차원배열
#print(arr) #완성 상태
# 리스트에서 벗어내기
for i in range(1,20):
for j in range(1,20):
print(arr[i][j], end=" ")
print()
바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때,
n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자
#입력받기
arr = [list(map(int,input().split())) for i in range(19)] #list comprehention?
# 뒤집기 횟수
n = int(input())
# 뒤집기
for i in range(n): # 총 n번 뒤집을것.
x, y = map(int, input().split()) # 좌표 10,10일때,
for j in range(19): #j==0일때 , (0부터 18까지 총 19개)
#세로줄 뒤집기
if arr[j][y-1] == 0:
arr[j][y-1] = 1
else:
arr[j][y-1] = 0 #그대로.
#가로줄 뒤집기.
if arr[x-1][j] == 0:
arr[x-1][j] = 1
else:
arr[x-1][j] = 0
for i in range(19):
for j in range(19):
print(arr[i][j], end=' ')
print()
# 6096 입력받기 연습
arr=[]
for x in range(10): # 총 세로로 10번을 입력받음. (test case)
temp = input().split() # 한번의 케이스
for y in range(3): # 다 하나씩 돌면서 다 int형태로 바꾸기.
temp[y]= int(temp[y])
arr.append(temp) # int형으로 바꾼 첫번째 list하나 추가하기. 그리고 맨위로 가서 반복
#라고 생각했으나,, 안됨ㅋ
# 1) - h,w의 격자판 만들기
h,w =map(int,input().split())
arr = []
for i in range(h):
arr.append([])
for j in range(w):
arr[i].append(0)
#print(arr)
#for i in arr:
# print(i)
#print(arr[0][0]) # 뽑기 .
n = int(input()) #케이스 개수
for i in range(1,n+1): #1부터 n개
l,d,x,y = map(int,input().split()) # 길이, 방향, 가장 위쪽의 위치.
if(d==0): # 가로
for k in range(l): # l길이만큼 이동
arr[x-1][y-1+k]=1 #x,y가 1일때 -> 0,0으로 출력됨!
else: # 세로
for k in range(l):
arr[x-1+k][y-1]=1
for i in range(h):
for k in range(w):
print(arr[i][k], end=" ")
print()
#입력
arr=[]
for x in range(10):
temp = input().split()
for y in range(10):
temp[y]= int(temp[y])
arr.append(temp)
# 시작 좌표 설정하기.
x,y=1,1
arr[1][1]=9 #시작할때 9로 만들고
while True:
if arr[x][y+1]==2: #개미 오른쪽이 9로 바꾸고 중단.
arr[x][y+1]=9
break
elif arr[x][y+1]==1 and arr[x+1][y]==1:# 개미의 오른쪽이나 아래쪽이 1이라면 중단
break
elif arr[x][y+1]==0: #오른쪽이 0이면
y+=1 # 오른쪽으로 이동.
arr[x][y]=9
elif arr[x][y+1]==1: # 오른쪽이 1이면
x+=1 #아래쪽으로 이동하다가
if arr[x][y]==2: #먹이를 발견하면 ,
arr[x][y]=9
break
else: #먹이를 발견하지 못하면 계속 내려가기.
arr[x][y]=9
#벗겨내기
for x in range(10):
for y in range(10):
print(arr[x][y], end=" ")
print()
6096번에서 가로줄 먼저뒤집고 세로줄 나중에 뒤집는 것인데 풀이에는 세로줄 먼저뒤집고 가로줄 나중에 뒤집는것처럼 풀이해두셨네요. 어떻게 해도 결과야 같을 것이라고 생각합니다만 문제에서 나온 십자 뒤집기의 정의와 달라 말씀드려요