상세 컨텐츠

본문 제목

Codeup 기초100문제 연습(1) - Python(문제 6001~6033번)

Programming/코테 공부

by Dal_pang 2022. 8. 22. 18:01

본문

codeup 기초 100문제 중 6001~6033번.


※ 기초 입출력 ※

ex1) 시:분 형식으로 시간이 입력될때 그대로 출력하기

a, b = input().split(':')
print(a, b, sep=':')

Split() : 값을 분리해주는 기능. split 함수의 괄호 안에 지정한 구분자를 기준으로 값들을 분리해준다.

python은 다른 언어와 다르게 다수의 변수에 한번에 입력이 가능하다. 
첫번째 코드 라인에서 입력에 대한 값을 콜론(':')  기준으로 나누어 각각 a와 b에 입력한후
두번째 코드 라인에서 separator(분류 기호) 콜론 (':')으로 나누어 출력한다.

위 코드는 입력값이 3:15인 경우, 3:15그대로를 출력해준다.

만약 sep이 없이 다음과 같이 코드를 작성하면 3:15 입력시 3 : 15라고 출력된다. (중간에 불필요한 띄어쓰기가 더 들어감)

a, b = input().split(":")
print(a,":", b)

 

ex2) 연도.월.일"을 입력받아 "일-월-연도" 순서로 바꿔 출력하기.

y,m,d = input().split(".")
#'연도.월.일'으로 입력받아 변수에 저장

print(d,m,y, sep='-')
#'-'을 기준으로 d,m,y변수 출력

입력값 : 2022.8.22
출력값 : 22-8-2022

ex3) '-'으로 나누어져 있는 주민등록번호를 '-'없이 출력하기.
=> empty 문자 : ''

f, s = input().split('-')
#'-'기준으로 나누어 f, s에 입력

print(f, s, sep='')
#출력시 두 값을 공백없이 연이어 출력하기

입력값:110011-0000000
출력값:1100110000000

ex4) 단어를 입력 받아 한 문자씩 줄을 바꿔 출력하기
=> 자바와 다르게 for문에 인덱스가 아닌 값이 바로 사용됨.

user_input = input()
for c in user_input:
  print(c)

입력값 : Hello
출력값 :

H
E
L
L
O

 

ex5) 연월일('YYMMDD' ) 입력받아 공백으로 나누어 ('YY MM DD') 출력하기.

s = input()
#유저로 부터 값 입력받기

print(s[0:2], s[2:4], s[4:], sep=" ")
#각각 값사이에 공백 구분자를 사용해 출력

입력값 : 220822
출력값: 22 08 22

 

ex6) 시:분:초 형식으로 입력받아 분만 출력하기

h, m, s = input().split(":")
#입력값을 구분자 기준으로 나눠 저장

print(m)
#분에 해당하는 m만 출력하기

 

ex7) 단어 2개 입력받아 이어붙이기

w1, w2 = input().split()
#split 함수에 별도 지정이 없는 경우 공백을 기준으로 자동 분리.

print(w1+w2)

입력값 : hello world
출력값 : hello world


※ 값변환 ※

ex1) 정수 2개 입력받아 합(sum) 출력

a, b = input().split()
print(int(a)+int(b))

파이썬은 입력받은 값을 기본적으로 String 형태로 인식한다.
=> int()를 이용해 형변환 필요.

ex2) 실수 2개 입력받아 합 계산

a, b = input().split()
print(float(a)+float(b))

출력변환 ※
bin(), oct(), hex() 기본 내장 함수를 이용해 10진수를 변환할수 있다.

ex1) 10진수 -> 16진수

num = int(input())
#값 입력받기
num_x = hex(num) #파이썬 내장함수 hex()를 이용해 16진수로 변환한 값을 num_x에 저장

print(num) #10진수 형태 값 출력 
print(num_x[2:]) #16진수 형태 값 출력 
#[2:]안쓸경우 앞에 0x...라고 값이 출력된다. 0x표시를 원할경우 num_x를 바로 출력가능.

입력값 : 255
출력값 (16진수 출력값) : ff(num_x[2:0]) 또는 0xff(num_x)

-> 다음과 같이 출력문에서 변환 타입을 지정해 16진수로 변환 출력도 가능.

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

입력값 : 255
출력값 : ff

ex2) 10진수 -> 16진수 대문자로 출력

num = int(input())
print('%X' %num)

입력값 : 255
출력값 : FF

더보기

함수를 이용해 hex()로 값을 처리하는게 더 쉬울것 같았는데, 소문자로만 리턴해주는듯.

소문자로 리턴 받은 값을 대문자로 변환하는 것도 가능하지만, 위와 같은 간단한 문제의 경우엔 출력문에서 format지정을 해주는게 코드가 더 짧아서 좋은것 같다.


 값변환 ※

ex1) 16진수 -> 8진수
입력값을 int값으로 변환하면서 옵션으로 16 이라고 적어주면 16진수 값으로 변환해준다.

hex = int(input(), 16)
print('%o' %hex)

입력값 : f
출력값 : 17

ex2) 영문자 입력받아 유니코드 값으로 출력하기
ord() <-> chr()
ord() : 문자를 해당 유니코드 숫자 값으로 변환
chr() : 유니코드 숫자값을 문자로 반환

chrToNum = ord(input())
print(chrToNum)

ch3) 10진수 정수 입력받아 유니코드 문자로 변환하기

numToChr = chr(int(input()))
print(numToChr)
#또는
numToChr = int(input())
print(chr(numToChr))

※ 산술 연산 ※
ex1) 부호 바꿔 출력하기 (neg -> pos, pos -> neg)

num = int(input())
print(-num)

=> 단항 연산자 -를 앞에 붙여주면 부호 변환 역할을 해준다.
입력값 : -25
출력값 : 25

ex2) 다음 문자 출력하기. 숫자인 경우 숫자 +1, 문자인 경우 다음 문자 출력.

user_input = input()

if (user_input.isnumeric()): #숫자라면
  print(int(user_input)+1) #숫자+1

else: #숫자가 아닌경우 즉, 문자인 경우
  print(chr(ord(user_input)+1)) 
  #유니코드 숫자로 변환후, 유니코드 문자로 재변환

입력값 : i => 출력값 : j
입력값 : 30 => 출력값 : 31

728x90

관련글 더보기