전체 글
[백준-2751] 수 정렬하기2 파이썬
# 문제 # 풀이 N이 백만개임을 주목하고, O(nlogn)을 가지는 정렬방법을 사용해야 한다. 파이썬 내장함수 sort를 이용하면 쉽게 구현할 수 있다. 아니면 퀵 소트나, 병합정렬과 같은 방법을 사용해서 정렬 후 출력해야한다. # 코드 import sys def solve(): N = int(sys.stdin.readline().strip()) arr = [] for _ in range(N): arr.append(int(sys.stdin.readline().strip())) arr.sort() for i in arr: print(i) if __name__ == '__main__': solve() # 마치며
[백준-7490] 0만들기 파이썬
# 문제 # 풀이 다음과 같이 1 다음에 공백,'+','-'가 오고 2 다음에도 똑같이 반복할 수 있다. 재귀적으로 하나씩 스택이 쌓이면서 해결해 나가는 방법을 사용하면 될 듯했다. 어떻게 보면 재귀를 이용해 완전 탐색하는 방법이고, 최종 결과가 0이면 출력해주면 된다. ##실패했지만 해결의 실마리를 준 풀이 def zero2(start,n,result,end): if start == n: if result == 0: return print(end) return next = start+1 str_plus = end + "+" + str(next) zero(next,n,result+next,str_plus) str_minus = end + "-" + str(next) zero(next,n,result-ne..
[백준-1074] Z 파이썬 풀이
# 문제 # 풀이 만약 내가 찾아야하는 곳이 (7,7)의 위치면 위의 그림과 같이 된다. 주어진 정사각형은 4등분으로 구역을 나누며 Z모양을 그린다. 이점에 주목해서 문제를 풀었다. 총 4개의 사분면으로 나누고, 현재 함수의 스택이 제 3사분면에 위치했다면, 0,1,2 사분면까지의 개수를 더해준 후, 좌표의 범위를 한단계 밑으로 축소해준다. 아래 그림을 봐보자. 문제풀면서 쓱쓱 그린거라 이쁘지는 않다..! 현재 구해야 하는 곳이 N=4, row=12, col=14라면 0~3사분면까지의 길이 + 함수(row=4,col=6)으로 다운스케일링이 가능 할 것이다. 그렇게 N=1 일때까지 함수를 호출해준다. # 코드 import sys def z(n,row,col): if n == 1: if row == 0 an..
[백준-2747] 피보나치 수 파이썬, 재귀함수 시간초과 메모이제이션 방법사용
# 문제 # 풀이 피보나치 수열 문제는 재귀함수를 배울때 가장 먼저 접하게 된다. 대부분의 수열 관계는 재귀함수로 짤 수 있다. 그러나 재귀함수는 1000번 이하로 호출이 가능하다. 그러나 이전에 계산했던 값에 대해서 다시 계산하기 때문에 자원낭비가 크다. 기본적으로 메모이제이션 기법을 사용해서 풀 수 있다. # 코드 # 재귀 이용했더니 시간초과 뜸 def fibo(n): if n
[백준-10989] 수 정렬하기3 파이썬, 계수정렬
# 문제 # 풀이 쉽다고 생각 할 수 있는데, 주어진 메모리가 너무 작다. 그렇기 때문에 시간을 손해보더라도 메모리를 적게쓰는 방법을 사용해서 문제를 풀어야한다. 천만개의 입력이 들어올 수 있고, 입력받은 정수를 모두 저장하는 배열을 사용하면 무조건 메모리초과가 뜬다. ## 실패했지만 잘 접근했던 풀이 import sys def not_solve(): N = int(input()) data = dict() arr = [] for _ in range(N): num = int(input()) if num not in data: data[num] = 1 arr.append(num) else : data[num] += 1 arr.sort() for i in arr: for _ in range(data[i]): ..