[CodeUp] Python 기초 100제

80695 단어 codeupcodeup

6018. 기초-입출력

🔆 24시간 시:분 형식으로 시간이 입력될 때, 그대로 출력하는 연습을 해보자.

# 내 코드
a,b = input().split(":")
print(f"{a}:{b}")

# 풀이 코드
a, b = input().split(':')
print(a, b, sep=':')    # separator 사용

6027-6031. 기초-출력변환/값변환

🔆 10진수를 입력받아 16진수(hexadecimal)로 출력해보자.

a = int(input())
print('%x' % a)

%x 16진수로 출력 (소문자)
%X 16진수로 출력 (대문자)
10진법 한 자리에 10개 (0 1 2 3 4 5 6 7 8 9)의 문자를 사용
16진법 한 자리에 16개 (0 1 2 3 4 5 6 7 8 9 a b c d e f)의 문자를 사용

🔆 16진수를 입력받아 8진수(octal)로 출력해보자.

a = input()
n = int(a, 16)    # a를 16진수로 저장
print('%o' % n)

%o 8진수로 출력

🔆 영문자를 입력받아 10진수 유니코드(Unicode)로 출력해보자.

a = ord(input())    # 입력값을 10진수 유니코드로 저장 *ord()
print(a)

🔆 영문자를 입력받아 유니코드 문자(character)로 출력해보자.

a = int(input())
print(chr(a))    # 입력값(정수)을 유니코드 문자로 저장 *chr()

6042. 기초-값변환

🔆 영문자를 입력받아 10진수 유니코드(Unicode)로 출력해보자.

# 내 코드
a = float(input())
print('%0.2f' %a)

# 풀이 코드 1
f = float(input())
print(round(f,2))

# 풀이 코드 2
a=float(input())
print(format(a, ".2f"))    # format 함수

6046-6047. 기초-비트시프트연산

a<<1 -> a * 2^1
a<<2 -> a * 2^2
a<<b -> a * 2^b

6051. 기초-비교연산

🔆 두 정수를 입력받아 둘의 값이 서로 다르면 True, 같으면 False 출력

# 내 코드
a, b = input().split()
a, b = int(a), int(b)
if a != b:
  print(True)
else:
  print(False)

# 풀이 코드
a, b = input().split()
a, b = int(a), int(b)
print(a!=b)    # print() 안에 들어간 내용에 부합할 경우 True 출력.

6052. 기초-논리연산

🔆 정수가 입력되었을 때, True/False로 평가해주는 프로그램 작성 (0이면 False, 0이 아니면 True)

# 내 코드
a = int(input())
print(a!=0)

# 풀이 코드
n = int(input())
print(bool(n))    # boolean - 숫자 0은 False, 0이 아니면 True

6056. 기초-논리연산

🔆 2개의 정수값이 입력될 때, 그 불 값(True/False)이 서로 다를 경우에만 True 출력

# 풀이 코드
a, b=input().split()
c = bool(int(a))
d = bool(int(b))
print((c and (not d)) or ((not c) and d))    
# c and (not d), (not c) and d - 서로 불값이 다름을 의미

6063-6064. 기초-3항연산

🔆 입력된 2개의 정수 중 큰 값을 출력 (단, 3항연산 사용)

🌭 3항 연산
x if A else y
A: 조건식
x: A가 True일 경우의 값
y: A가 False일 경우의 값

a, b = input().split()
a, b = int(a), int(b)
print(a if a > b else b)

🔆 입력된 3개의 정수 중 가장 작은 값을 출력 (단, 3항연산 사용)

# 내 코드
a, b, c = input().split()
a, b, c  = int(a), int(b), int(c)

x = (a if a<b else b) if (a if a<b else b)<c else c
print(x)

# 풀이 코드
a, b, c = input().split()
a = int(a)  
b = int(b)
c = int(c)

d = a if a<b else b    # 내 코드를 순서에 따라 나누면 나오는 형태
e = d if d<c else c    # a와 b를 먼저 비교 후, c와 비교

print(e)

6071, 6074. 기초-반복실행구조

🔆 줄을 바꿔 계속 입력되는 임의의 정수가 0이 아니면 출력, 0이면 중단

# 내 코드
a = int(input())
while a != 0:
  print(a)
  a = int(input())

# 풀이 코드
while True:    # 무한루프**
    a=input()
    a=int(a)
    if a==0:
        break
    else:
        print(a)

🔆 영문 소문자(a ~ z) 1개가 입력되었을 때, a부터 그 문자까지의 알파벳을 순서대로 출력

A = ord(input())    # ord로 알파벳문자의 정수값 알아내기
t = ord('a')    # ord로 문자 a의 정수값 알아내기
while t <= A:
  print(chr(t), end=' ')    # chr(정수값)로 유니코드문자 출력
  t += 1

6079. 기초-종합

🔆 1, 2, 3, ...을 계속 더해 나갈 때, 그 합이 입력한 정수보다 같거나 작을 때까지만 계속 더하는 프로그램 작성

# 내 코드
while True:
  a = int(input())
  sum = 0
  for i in range(1, a+1):
    sum += i
    if sum >= a:
      print(i)
      break
      
# 풀이 코드
n = int(input())
s = 0
t = 0

while s<n :
  t = t+1
  s = s+t
  
print(t)

>>> 너무 복잡하게 생각했음. 조건을 반대로 생각해보면 훨씬 간단하게 풀 수 있었음.

6081. 기초-종합

🔆 A, B, C, D, E, F 중 하나가 입력될 때, 1부터 F까지 곱한 16진수 구구단의 내용을 출력해보자.

# 입력 예시
B

# 출력 예시
B*1=B
B*2=16
B*3=21
B*4=2C
B*5=37
B*6=42
B*7=4D
B*8=58
B*9=63
B*A=6E
B*B=79
B*C=84
B*D=8F
B*E=9A
B*F=A5


# 내 코드
a = int(input(), 16)    # 입력값을 16진수로 인식하고 그를 정수값으로 변환하여 저장

for i in range(1, 16):    
  print('%X*'%a, '%X'%i, '=%X'%(a*i), sep='')


# 풀이 코드
n = int(input(), 16)

for i in range(1, 16) :
  print("%X*%X=%X"%(n,i,n*i))    # 문자열 나누지 않고 한번에

🍕 소수점 표현하기

#a = 3.56242
1. '%.2f' %a
2. round(a, 2)
3. format(a, '.2f')
4. '{0:0.2f}'.format(a)

**round는 반올림, 소수부분이 없는데 0으로 자리수를 채워주지는 않음.
print(round(5, 2)) = 5
print('%.2f' % 5) = 5.00


6093. 기초-리스트

🔆 출석 번호를 n번 무작위로 불렀을 때, 부른 번호를 거꾸로 출력

# 내 코드
n = int(input())
a = input().split()

a.reverse()    # 리스트 a를 역순으로 재배열

for i in range(n):
  print(int(a[i]), end=' ')
  
# 풀이 코드
n = int(input())
a = input().split()

for i in range(n) :
  a[i] = int(a[i])

for i in range(n-1, -1, -1):    # range를 역순으로
  print(a[i], end=' ')

🍕 range

  • for 변수 in range(시작, 끝, 증가폭)
    ex) for 변수 in range(0, 10, 2)  # 0부터 9까지 2씩 증
    ex) for 변수 in range(10, 0, -1)  # 10부터 1까지 역순으로
    ** for 변수 in reversed(range(10))  # 9부터 0까지

6094. 기초-리스트

# 내 코드
n = int(input())
a = input().split()

for i in range(n):
  a[i] = int(a[i])

a.sort()    # sort로 제일 작은 값을 맨 앞으로 뺌
print(a[0])


# 풀이 코드
n = int(input())
a = input().split()

for i in range(n) :
  a[i] = int(a[i])

min = a[0]
for i in range(0, n) :
  if a[i] < min :
    min = a[i]

print(min)

🍖 값 비교를 어떻게 할지 계속 고민하다가 결국 sort를 생각해냈는데,
풀이코드에서 방법을 보았다,, 유레카


6095. 기초-리스트

🔆 바둑판에 흰 돌 놓기

#입력
5
1 1
2 2
3 3
4 4
5 5
#출력
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# 내 코드
a = []
for i in range(19):    # 1
  a.append([])
  for j in range(19):
    a[i].append(0)

n = int(input())    # 2
N = []
for i in range(n):
  (x, y)= input().split()
  N.append((int(x), int(y)))

for i in range(n):    # 3
  q = N[i][0] -1
  r = N[i][1] -1
  a[q][r] = 1

for i in range(19):    # 4
  for j in range(19):
    print(a[i][j], end=' ')
  print()  


>>> 2번 블록에서 input 받은 값을 튜플로 리스트에 저장 후, 
3번 블록에서 해당 위치에 1을 저장함 (일을 두번 함 ㅎ)
range도 세상 복잡하게 잡았음,,



# 풀이 코드
d=[]
for i in range(20) :    # 1
  d.append([])
  for j in range(20) : 
    d[i].append(0)

n = int(input())     # 2
for i in range(n) :
  x, y = input().split()
  d[int(x)][int(y)] = 1

for i in range(1, 20) :    # 3
  for j in range(1, 20) : 
    print(d[i][j], end=' ')
  print()
  
>>> 2번 블록에서 input 받고 바로 그 값을 이용해 해당 위치에 1 저장

6098. 기초-리스트

🔆 개미의 이동경로 표시

#입력
1 1 1 1 1 1 1 1 1 1
1 0 0 1 0 0 0 0 0 1
1 0 0 1 1 1 0 0 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 0 0 0 0 1 2 1 0 1
1 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
#출력
1 1 1 1 1 1 1 1 1 1
1 9 9 1 0 0 0 0 0 1
1 0 9 1 1 1 0 0 0 1
1 0 9 9 9 9 9 1 0 1
1 0 0 0 0 0 9 1 0 1
1 0 0 0 0 1 9 1 0 1
1 0 0 0 0 1 9 1 0 1
1 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
# 내 코드
map = []

for i in range(10):
  a = list(input().split())
  map.append(a)

x = 1
y = 1

while True:
  if int(map[x][y]) == 0:
    map[x][y] = 9
    y += 1
  elif int(map[x][y]) == 1:
    x += 1
    if int(map[x][y-1]) != 2:
      if int(map[x][y-1]) == 0:
        map[x][y-1] = 9
      else:
        break
    else:
      map[x][y-1] = 9
      break

  else:
    map[x][y] = 9
    break

for a in range(10):
  for b in range(10):
    print(map[a][b], end=' ')
  print()




# 풀이 코드
m=[]
for i in range(12) :
  m.append([])
  for j in range(12) :
    m[i].append(0)

for i in range(10) :
  a=input().split()
  for j in range(10) :
    m[i+1][j+1]=int(a[j])

x = 2
y = 2
while True :
  if m[x][y] == 0 :
    m[x][y] = 9
  elif m[x][y] == 2 :
    m[x][y] = 9
    break

  if (m[x][y+1]==1 and m[x+1][y]==1) or (x==9 and y==9) :
    break

  if m[x][y+1] != 1 :
    y += 1
  elif m[x+1][y] != 1 :
    x += 1
    

for i in range(1, 11) :
  for j in range(1, 11) :
    print(m[i][j], end=' ')
  print()
  

좋은 웹페이지 즐겨찾기