본문 바로가기
컴퓨터/백준 문제풀이

1074번 Z, 7490 0 만들기, 2751 수 정렬하기 2

by 하링아 2020. 9. 17.
반응형

1074번 Z, 7490 0 만들기, 2751 수 정렬하기 3

 

1074 Z

 

재귀 함수 이용하는 건데 어렵다..

 

# 첫번째 풀이
def fibo(n, x, y):
    global result
    if n == 2:
        if x == X and y == Y:
            print(result)
            return
        result += 1
        if x == X and y+1 == Y:
            print(result)
            return
        result += 1
        if x+1 == X and y == Y:
            print(result)
            return
        result += 1
        if x+1 == X and y+1 == Y:
            print(result)
            return
        result += 1
        return
    fibo(n/2, x, y)
    fibo(n/2, x, y + n/2)
    fibo(n/2, x+n/2, y)
    fibo(n/2, x+n/2, y+n/2)

result = 0
N, X, Y = map(int, input().split(' '))        
fibo(2**N, 0, 0)

# 두번째 풀이
N, r, c = map(int, input().split())

def Z(sz, x, y):
	if sz == 1:
		return 0
	sz //= 2
	for i in range(2):
		for j in range(2):
			if x < sz * (i+1) and y < sz * (j+1):
				return (i*2+j) * sz * sz + Z(sz, x-sz*i, y-sz*j)
				
print(Z(2**N, r, c))

얻은 것

- python3으로 돌려서 시간 초과. pypy3로 돌렸는데도 시간 초과. 근데 아무 코드 변경 없이 pypy3로 다시 돌리니 됐다. 이제 한 번으로 안되는지 모른다...

 

 

7490 0 만들기

 

import copy

def recursive(array, n):
    if len(array) == n:
        operators_list.append(copy.deepcopy(array))
        return
  
    array.append(' ')
    recursive(array, n)
    array.pop()

    array.append('+')
    recursive(array, n)
    array.pop()

    array.append('-')
    recursive(array, n)
    array.pop()

test_case = int(input())

for _ in range(test_case):
    operators_list = []
    n = int(input())
    recursive([], n-1)
    integers_list = [i for i in range(1, n+1)]

    for operator in operators_list:
        string = ''
        for i in range(n-1):
            string = string + str(integers_list[i]) + operator[i]
        string = string + str(integers_list[-1])      
        if eval(string.replace(' ', '')) == 0:
            print(string)
    print()

얻은 것

- copy 라이브러리에서 deepcopy로 새로운 객체에 복제

- array.pop() 사용법

- eval() 함수는 수식으로 이루어진 문자열 계산 가능

 

 

2751 수 정렬하기 2

 

# 첫번째 풀이 sort() 사용
n = int(input())
array = []

for _ in range(n):
    item = int(input())
    array.append(item)

array.sort()
for i in array:
    print(i)
    
# 두번째 풀이 sorted() 사용
n = int(input())
array = []

for _ in range(n):
    item = int(input())
    array.append(item)

array = sorted(array)

for i in array:
    print(i)

얻은 것

- sort()의 경우 결과값으로 None 반환. 받는 변수 없어도 사용 가능

- sort() 사용법 : 리스트.sort()

- sortred()의 경우 결괏값으로 변수 있어야 함.

- sorted() 사용법 : sorted(iterable 객체). iterable 객체 : 리스트, 튜플, 딕셔너리 등

- append()의 경우 반환 값 None

반응형

댓글