전체 글

전체 글

    [백준-1966] 프린터 큐 파이썬

    [백준-1966] 프린터 큐 파이썬

    # 문제 # 풀이 일반적인 큐의 정책에 따라서 pop되어야 하는 원소를 기준으로 그 뒤의 원소들 중 큰 값이 있다면 큐의 맨뒤에 줄을 세우는 과정을 반복하면 된다. 그러나 출력해야하는 문서의 초기 인덱스 값인 M 큐가 계속해서 update됨에따라서 인덱스 번호가 바뀐다. 이 것을 해결하는 것이 문제를 푸는 가장 중요한 포인트라고 생각했다. M이 맨앞에오는 시점(인덱스가 0일때) 즉 출력되어야하는지 맨 뒤로 가야하는지를 결정하는 시점또한 중요 포인트다. # 실패한 풀이 def unsolve(n): result = [] for _ in range(n): cnt = 0 N,M = list(map(int, sys.stdin.readline().strip().split())) data = list(map(int,..

    [백준-1874] 스택 수열 파이썬

    [백준-1874] 스택 수열 파이썬

    # 문제 # 풀이 1~N까지의 숫자를 차례대로 스택에 push 또는 pop하여 수열을 만들 수 있는지 확인하는 문제였다. 주어진 수가 현재 스택에 넣어진 수가 아닌지 확인하며 주어진 수까지는 스택에 꾸준히 push시킨다. 핵심 포인트는 pop을 하는 상황인데, pop은 무조건 스택의 최상위의 숫자만 할 수 있기때문에 해당 조건을 통해서 검사해야한다. # 실패한 풀이 import sys PLUS = "+" MINUS = "-" # 실패 코드 def get_top(stack): stack_len = len(stack) if stack_len == 0: return 0 return stack[stack_len-1] def get_start(stack): if len(stack) == 0 : return 0 r..

    [코루틴#1] 코루틴 시작하기, runBlocking, launch, delay, suspend

    [코루틴#1] 코루틴 시작하기, runBlocking, launch, delay, suspend

    # 시작하며 앱공부를 하다보니까, 아키텍처와 코루틴의 중요성을 알게 됐다. 그래서 책도사고 여러가지 공부할 방법을 고심했는데, 결국 강의하나를 질렀다. 코루틴에 대해서 셜명해주는 강의인데, 공부한 내용을 바탕으로 정리하도록 하겠다. 이번에는 첫강의인 만큼 코루틴이 어떤 것이며 어떻게 사용하는지에 대한 감을 익히는 방법이 주된 내용이었다. 강의에 나온 예제를 바탕으로 중요한 개념들을 정리해볼까 한다. # runBlocking import kotlinx.coroutines.* fun main() = runBlocking { println(Thread.currentThread().name) println("Hello") } runBlocking는 코루틴을 생성하는 함수 중 하나이다. 이것을 코루틴 빌더라고 한..

    [백준-2798] 블랙잭 파이썬, 3중 반복문 사용

    [백준-2798] 블랙잭 파이썬, 3중 반복문 사용

    # 문제 # 풀이 문제를 너무 어렵게 생각했다. 알고리즘 공부를 막 시작한터라 시간복잡도에 얽매이면서 뭔가 코드를 가장 효율적이게 짜야한다는 생각에 휩싸였다. ## 실패한 풀이1 맨 처음에는 백트래킹방법으로 조건에 맞는 가지치기를 하려고 했다. 이것도 틀린 풀이가 될 것 같지는 않았는데, 어제 공부했던 백트래킹인데 막상 구현하려니 헷갈려서 다른 방법을 찾아보려고 했다. ## 실패한 풀이2 이번엔 3중 반복문을 사용하면서 비교하도록 했다. 결국에 이렇게 푸는게 정답이었는데, 나의 뭔지 모르는 자신감이 정답을 산으로 가게 만들었다. 나름 효율성을 생각한다고.. 가장 큰값 하나는 무조건적으로 선택 될 것이라는 말도 안되는 생각이 [예제 입력2] 케이스를 넘지 못하게 했다. 풀면서 생각해보니까 정말 어디서 나온..

    [백준-2920] 음계 파이썬, 오름차순 내림차순 판단하기

    [백준-2920] 음계 파이썬, 오름차순 내림차순 판단하기

    # 문제 # 풀이 입력조건이 너무 깔끔하기 때문에 여러 경우의 수를 생각할 필요는 없었다. 또한 8개만 입력이 들어오기 때문에 시간복잡도에대한 생각을 하지 않아도 됐다. 오름차순 경우의 수와 내림차순 경우의 수는 8개의 음계를 정렬, 리버스정렬로 리스트를 재생성하고, 비교해주는 풀이방법을 사용했다. # 다른 풀이 전략 그러나 입력이 이렇게 깔끔하지 않는 문제가 존재할 것이고 데이터가 많아진다면 상당히 비효율적인 방법이 될 것이다. 오름차순과 내림차순은 간단하게 앞-뒤 두개의 데이터쌍만을 비교하면 되기 때문에 반복문을 이용해서 두개의 데이터를 비교해 나가면 더욱 효과적일 것이다. 내림차순 Flag와 오름차순 Flag를 각각 만들고 조건에 맞지 않는다면 해당 Flag를 Flase로 바꿔준다. 이후 두개의 플..