AttackOnNunu

Once more into the fray


  • 홈

  • About

  • 태그

  • 카테고리

  • 아카이브

  • 검색

(SW Expert Academy) 함수의 기초 - 6325번 6326번 6327번 6328번 6329번

작성일 2019-07-29 In ALGORITHM 🎯 , SW 아카데미 댓글:

6번 - 6325번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

list를 입력받고 정렬하고… 이런 부분은 생략
임의의 숫자도 입력받고 함수의 인자로 넘기는 부분도 생략

sorted_list = [2, 4, 6, 8, 10]

def find_value(value, list):
if value not in list:
print("{} => False".format(value))
else:
print("{} => True".format(value))

print(sorted_list)
find_value(5, sorted_list)
find_value(10, sorted_list)

7번 - 6326번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

팩토리얼 : n! = n _ n-1 _ n-2 _ … _ 2 * 1

def factorial(n):
ans = 1
for i in range(1, n+1):
ans \*= i
return ans

num = int(input())
print(factorial(num))

**


8번 - 6327번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

콤마 ‘,’로 구분하고 int 형으로 입력받는 방법을 기억!

def square_num(n):
return n\*\*2

num1, num2 = map(int, input().split(','))

print("square({}) => {}".format(num1, square_num(num1)))
print("square({}) => {}".format(num2, square_num(num2)))

9번 - 6328번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

길이가 같을 경우 그냥 둘 다 출력되게함

def which_is_longer(str1, str2):
if (len(str1) == len(str2)):
print(str1, ", ", str2)
elif(len(str1)>len(str2)):
print(str1)
else:
print(str2)

str1, str2 = input().split(', ')

which_is_longer(str1, str2)

10번 - 6329번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내
def countDown(n):
if(n==0):
print("카운트다운을 하려면 0보다 큰 입력이 필요합니다.")

for i in range(n, 0, -1):
print(i)

countDown(0)
countDown(10)

(SW Expert Academy) 함수의 기초 - 6319번 6320번 6321번 6323번 6324번

작성일 2019-07-29 In ALGORITHM 🎯 , SW 아카데미 댓글:

1번 - 6319번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

string 뒤집는 방법 2가지
내장함수 사용 -> “”.join(reverse(string))
문자 하나하나 잘라서 뒤집기 -> string[::-1]

def check_palindrome(w):
#if(w == ''.join(reversed(w))):
if(w == w[::-1]):
print("입력하신 단어는 회문(Palindrome)입니다.")
else:
print("입력하신 단어는 회문(Palindrome)이 아닙니다.")

word = input()
print(word)
check_palindrome(word)

2번 - 6320번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

Test case도 별로 없고… 문제와 입력값의 설명이 부실하니 출력값을 그냥 print해도 맞다고 할듯…
아마 가위바위보에서 이긴 사람의 이름을 출력해야하는게 원래 의도였지 않았을까 싶다.(주석 처리한 부분들)

#def RSP_game(name1, name2, x, y):
def RSP_game(x, y):
if(x == y):
print("비겼습니다!")
elif((x=='가위' and y=='바위') or (x=='바위' and y=='보') or (x=='보' and y=='가위')):
#print("{}가 이겼습니다!".format(name2))
print("{}가 이겼습니다!".format(y))
else:
#print("{}가 이겼습니다!".format(name1))
print("{}가 이겼습니다!".format(x))

Player1 = input()
Player2 = input()
h1 = input()
h2 = input()

#RSP_game(Player1, Player2, h1, h2)
RSP_game(h1, h2)

3번 - 6321번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

소수 정의에 충실하게 함수를 만들면 아래와 같다.
에라토스테네스의 체를 활용하는 방법은 두 번째 방법이다.

def is_prime(num):
for i in range(2, num):
if(num%i==0):
return False
return True

num = int(input())
if(is_prime(num)):
print("소수입니다.")
else:
print("소수가 아닙니다.")
n=1000
a = [False,False] + [True]\*(n-1) # 0,1은 소수가 아니고 나머지는 일단 True로 리스트 생성
primes=[] # 소수를 담을 리스트

for i in range(2,n+1):
if a[i]:
primes.append(i)
for j in range(2\*i, n+1, i): # 범위에서 합성수를 False로 전환
a[j] = False
print(primes)

4번 - 6323번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

재귀함수로도 풀 수 있지만 Memoization을 사용하면 O(n) 시간에 풀 수 있음

memo = {1:1, 2:1} #첫 번째와 두 번째는 1

def fibo(n):
if n not in memo:
memo[n] = fibo(n-1) + fibo(n-2)
return memo[n]

num = int(input())
fibo(num)

print("[", end='')
for i in range(1, num):
print("{}, ".format(memo[i]), end='')
print("{}]".format(memo[num]))

아래는 굉장히 python 다운 깔끔한 코딩방법

def fibonacci(n):
a, b = 1, 0
for i in range(n):
a, b = b, a + b
return b

5번 - 6324번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

set 자료형을 사용하면 중복값을 쉽게 제거할 수 있지만 index를 지원하지 않음 (이 문제에서 출력 형식에 맞추기 까다로움)
전역변수로 list를 하나 만들고 함수 안에서 변경값이 적용되도록 global 사용 (global 사용하지 않고 return 시킬 수도 있지만 배운 강의내용 활용)

li = [1, 2, 3, 4, 3, 2, 1]

# print(li)

# print(set(li))

unique_list = list()
def unique_value(li):
global unique_list
for i in range(len(li)):
num = li[i]
if num not in unique_list:
unique_list.append(num)

print(li)
unique_value(li)
print(unique_list)

(SW Expert Academy) 흐름과 제어 반복 - 6249번 6251번 6253번

작성일 2019-07-28 In ALGORITHM 🎯 , SW 아카데미 댓글:

10번 - 6249번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

솔직히 출력값에 띄여쓰기 한칸 차이난다고 오답처리 하는건 좀…

num = input()
num_list = [0] \* 10

# 또는 num_list = [0 for i in range(10)]

for n in str(num):
num_list[int(n)]+=1

for i in range(10):
print(i, end=' ')
print()
ans=''
for i in range(10):
ans += str(num_list[i]) + " "

print(ans[:-1])

11번 - 6251번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

반복

for i in range(5):
print("{}{}".format(" "_(4-i), "_"\*(i+1)))

13번 - 6253번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

12번 문제 없음
내장함수를 쓰면 2줄만에 끝남 (주석 부분)
굳이 직접 연산하면 아래와 같음 (파이썬은 동적으로 타입을 정하기 때문에 몫을 구할 때 ‘//‘ 연산자를 사용해야함. ‘/‘ 사용시 실수형으로 바뀜)


# x = bin(int(input()))

#

# print(x[2:])

x = int(input())

binary=''

print(x)

while True:
if(x==1):
binary += '1'
break;
binary += str(x%2)
x //= 2
print(x)

print(x)
print(binary[::-1])

1…232425…33
NUNU

NUNU

개인적으로 공부하면서 정리한 내용들을 블로그에 남기고 있습니다.
99 포스트
18 카테고리
53 태그
RSS
Creative Commons
© 2021 NUNU
Powered by Hexo v3.9.0
|
Theme – NexT.Mist v7.2.0