본문 바로가기

Programming Language/Python

CodeUp 기초 100제 정리

728x90
반응형

#6020

입력예시: 000907-1121112 / 출력예시: 00009071121112

#one2ye code
a,b = input().split('-')
print(a,b,sep="")

#20s code
num = input()
re_num = num.replace("-","")
print(re_num)

입출력 결과

 


#6023

 

입력 예시: 17:23:57 / 출력 예시: 23

#one2ye code
s = input().split(":")
print(s[1])

#20s code
h,m,s = input().split(':')
print(m)

입출력 결과

 


#6042

 

입력예시: 3.141592 / 출력예시: 3.14

#one2ye code
a = float(input())
print(format(a, ".2f"))

#20s code
a = float(input())
print(round(a,2))

입출력 결과

 


#6066

 

입력예시: 1 2 8 / 출력예시: odd\n even\n even\n

a,b,c = input().split()
a = int(a)
b = int(b)
c = int(c)
d = [a,b,c]
for i in d:			# 반복문을 사용해서 코드 줄이기!
    if i%2==0:
        print("even")
    else:
        print("odd")


# 원래 코드!
# if a%2==0:
#     print("even")
# else:
#     print("odd")
# if b%2==0:
#     print("even")
# else:
#     print("odd") 
# if c%2==0:
#     print("even")
# else:
#     print("odd")  

입출력 결과

* 지난 번에 공부했던 반복문을 사용해서 코드를 줄이고 싶어서 시도해봤다!!ㅎㅎㅎ

 


#6067

 

입력예시: 55 / 출력예시: 10

n = int(input())
s = 0
for i in range(1000):
    s+=i
    if s>=n:
        print(i)
        break

입출력결과

 

 

* for문 사용에 익숙하지 않아서 엄청 오래 걸렸던 문제이다!!ㅠㅠ

 

알게된 사실 1) sum을 넣어 줄 s변수는 for문 밖에 전역변수로 초기화해서 선언해주어야 한다.

알게된 사실 2) i도 변수처럼 사용이 가능하다...

알게된 사실 3) 우리가 입력받는 n값은 사실상 이미 숫자들이 더해진 합이기 때문에 s에 계속 더해가야 할 값은 n이 아니라 0부터 하나씩 증가하면서 돌아가는 i값이다.

알게된 사실 4) 마지막에 더한 정수를 출력하는 것이기 때문에 if문에 걸려서 마지막으로 돌아가고 중단되어 버린 i값을 출력해주면 된다.

 

 


#6083

 

입력예시: 1 1 1 / 출력예시: 0 0 0, 1

r,g,b = input().split()
r = int(r)
g = int(g)
b = int(b)
count = 0
for i in range(0,r):
    for j in range(0,g):
        for k in range(0,b):
            print(i, j, k)
            count+=1
print(count)

 

* 처음에 어떻게 접근해야 하는지 감도 오지 않아서 많이 헤맸는데, 천천히 디버깅을 해보면서 i,j,k의 값이 어떻게 변하고 출력되는지를 확인했다. 다중 for문을 제대로 이해하는 계기가 되었다!!

 


# 다중 for문 연습하기

 

이거 출력해보자!

#20s code
a="*"
for i in range(1,6):
    print(i*a)
    
#one2ye code
for i in range(6):
    print(i*"*")
    
    
    
# 그냥 for문 한 개만 사용해서 출력해본 것!
# 다중 for문 사용해보기!!

for i in range(5):
    for j in range(i+1):
        print('*', end="")
    print('')

ㅠㅠ거의 다 알았는데 i보다 j가 하나씩 더 증가해서 출력해야된다는 부분을 range에 표현하지 못했다!ㅠㅠ 그래서 결국 답을 보고 이해했다.

 

 


 

 

이거 출력해보쟈!

 

for i in range(5,0,-1):
    for j in range(i):
        print('*', end="")
    print('')

* for문의 range에 대해서 제대로 이해하고 있지 못해서 비슷한 방식으로도 접근을 못했다. 역순으로 출력되게 하려면 '-'부호를 써야하나만 고민했었는데 range() 범위 안에 range(5,0,-1)은 5부터 0초과까지 -1씩 줄여나가라는 뜻이라는 것을 알게되었다. range(1,6,2) 는 1부터 6미만까지 2씩 증가시켜가면서 출력하라는 뜻!

C언어에서는 for(i=0; i<6; i++)라고 쓰는 것과 동일한 의미이다.

 

 


#6084

 

h,b,c,s = input().split()
h = int(h)
b = int(b)
c = int(c)
s = int(s)
if (0<h<=48000) and ((0<b<=32) and (b%8==0)) and (0<c<=5) and (0<s<=6000):
    result = float(h*b*c*s/8/1024/1024)
    a = format((result), ".1f")
    print(a, end=" ")
    print("MB")
    
  # 요건 왜 안될까? 엄청 고민했던 코드!!
  #print((format(float(h*b*c*s/8/1024/1024))), ".1f"

 


#6088~#6090

수열 문제!!

 

요런식의 문제 3개!! 등차수열/등비수열/합친거

#6088
a, d, n = input().split()
a = int(a)
d = int(d)
n = int(n)
count = 0
for i in range(n-1):
    count += 1
    a = a + d
    if count == n:
        break
print(a)

#6089
a,r,n = input().split()
a = int(a)
r = int(r)
n = int(n)
count = 0
if (0<=a,r,n<=10):
    for i in range(n-1):
        count += 1
        a = a * r
        if count == n:
            break
print(a)

#6090
a,m,d,n = input().split()
a = int(a)
m = int(m)
d = int(d)
n = int(n)
count = 0
if (-50<=a,m,d<=50) and (0<n<=10):
    for i in range(n-1):
        count += 1
        a = a*m+d
        if count == n:
            break
print(a)

 

* 첫 번째 문제를 풀 때 엄청 오래 걸리고 고민을 많이 했어서 답을 보려고 했지만, 한 번 더 생각해보고 해낸 문제라서 뿌듯해서 기록한다!!!

* count를 어떤 방식으로 하는게 좋을지와 입력 값 a부터 count 되게 해야하는데 계속 그 다음 숫자부터 적용이 돼서 range 범위를 정하는데 애를 먹었던 문제이다.

 


#6096

2차원 배열에 익숙하지 않아서 엄청 고생했던 문제!

 

# 이중 for문을 통해 19x19 크기의 0들이 담겨있는 d라는 list 생성.
d = [[0 for j in range(20)] for i in range(20)]	#list comprehension
# 입력된 값을 d에 넣어준다.
for i in range(19):
    a = input().split()
    for j in range(19):
        d[i+1][j+1] = int(a[j]) 	#index는 0부터 시작하기 때문에 1씩 더해준다!
# 몇 번 바꿀지 횟수 입력받기
n = int(input())
# 위에서 입력받은 횟수만큼(n번) x,y값을 입력받기.
for i in range(n):
    x,y = input().split()
    for j in range(1,20):
        if d[j][int(y)]==0:
            d[j][int(y)]=1
        else:
            d[j][int(y)]=0
        if d[int(x)][j]==0:
            d[int(x)][j]=1
        else:
            d[int(x)][j]=0
# 가로 세로 줄의 값을 (1->0, 0->1)로 바꿔준 다음 출력하기.
for i in range(1,20):
    for j in range(1,20):
        print(d[i][j], end=' ')
    print()

 

 

 

끄으으읕!

728x90
반응형