알고리즘/백준(31)
-
균형잡힌 세상 [ Python ] [ 백준 : 4949 ]
풀이 및 회고 오랜만에 문제이해가 쉬웠으나 푸는건 어려웠던 문제였다. 괄호 짝이 맞는지 찾는 문제인데 처음에 딕셔너리를 사용하려했다가 아닌거 같아 포기하고 if 로 조건을 걸어서 풀었다. 3시간씩걸릴 문제가 아니겠지만 풀면서 노트에 적어서 반복문이 어떻게 돌아가는지 적어가면서 잘못되면 수정하는 방식으로 풀었다. 다 제출하고 난 다음 다른사람의 코드를 살펴봤는데 처음에 포기했던 딕셔너리를 사용하는 방식이 눈에 들어왔다. 포기한게 아쉬웠고 이렇게보면 안되는게 없는 것 같다. 포기하지말자 # 균형잡힌 세상 # 1. 문자열 입력받기 # 2. 괄호만 리스트에 넣는다. # 3. 반복문을 통해 검증한다. # 4. 출력한다. # (((( import sys while True: s = sys.stdin.readline..
2023.05.27 -
스택 수열 [ Python ] [ 백준 : 1874 ]
풀이 및 회고 문제 이해하는데 저어어어어어어엉말 오래걸렸던 문제입니다. 아래처럼 보면 됩니다. # 4 일때 ++++- # 3 일때 - # 6 일때 ++- # 8 일때 ++- # 7 일때 - # 5 일때 - # 2 일때 - # 1 일때 - 문제를 푸는데 무려 4시간이 넘게 걸린 문제입니다. 어떻게 해야되는지 생각은 나는데 구현이 쉽사리 되지 않았습니다. 생각이 많았던게 독이었던거 같습니다. 주변 사람들에게 도움을 많이 받았던 문제였습니다. 스택 문제를 더 풀어봐야 할 거 같습니다. # 스택 수열 # 4 일때 ++++- # 3 일때 - # 6 일때 ++- # 8 일때 ++- # 7 일때 - # 5 일때 - # 2 일때 - # 1 일때 - # 1. n 을 입력받는다. # 2. 리스트를 선언한다. 입력값을 저장..
2023.05.27 -
약수 [ Python ] [ 백준 : 1037 ]
풀이 및 회고 약수를 구하는 문제인데 방법을 구하기 어려웠고 복잡하게 생각이 들었던 문제였다. 나영님이 입력받은 값의 최소값과 최대값을 곱하면 쉽게 구할 수 있다고 말해주셨다. 대박. 그래서 문제를 풀어나갔고 풀고 나서 다른 사람의 풀이도 보았는데 우리가 작성한 코드보다 훨씬 간결했다. 아쉬웠습니다 ㅠㅜ # 약수 n = int(input()) t = list(map(int, input().split())) t.sort() if len(t) % 2 == 0: answer = t[0] * t[-1] else: num = len(t) // 2 answer = t[num] ** 2 print(answer) ''' 이렇게도 푸네요 ㄷㄷ n = int(input()) a = list(map(int, input()...
2023.05.27 -
요세푸스 문제 0 [ Python ] [ 백준 : 11866 ]
풀이 및 회고 처음에 문제를 이해하기 어려워 나무위키에 요세푸스 수열을 검색했고 노트에 직접 그려보았다. 문제에서 deque 패키지에 rotate 를 사용하면 풀 수 있는 문제라고는 생각했다. 하지만 반복문에서 어떻게 사용하지 에서 막혔었는데 신범님이 rotate를 사용하는 방향을 잡아주셨고 결과에 도달할뻔 하였다. 마지막은 출력이문제였는데 안에 값이 들어가야 하는 것. 그래서 deque 에 있는 값을 list 로 옮겨 join 을 이용해 출력했다. 그리고 코드를 줄일수 있는 방법이 있었는데 이는 리스트 내포 라고 한다. deque 에 길게 코드를 짜서 넣는 것이 아닌 한번에 deque 에 넣을 수 있었다. 잘 숙지하면 쓸일이 또 생길거 같다. # 요세푸스 문제 0 from collections impo..
2023.05.26 -
덱 [ Python ] [ 백준 : 10866 ]
풀이 및 회고 파이썬의 deque 패키지를 사용하면 쉽게 구현할 수 있었다. # 덱 # https://docs.python.org/3/library/collections.html#collections.deque from collections import deque import sys n = int(input()) q= deque() for i in range(n): data = list(sys.stdin.readline().split()) if data[0] == "push_front": q.appendleft(data[1]) elif data[0] == 'push_back': q.append(data[1]) elif data[0] == 'pop_front': if len(q): print(q.pople..
2023.05.26 -
소수 찾기 [ Python ] [ 백준 : 1978 ]
풀이 및 회고 팀원들과 함께 페어프로그래밍을 진행했던 문제이다. 나는 count 를 증가시키는 방식을 생각했는데 다른분들 같은 경우는 count 를 빼 주는 방식을 생각하셨다. 문제를 풀면서 list 와 map 으로 만들었을 때와 map 만으로 만드는 방식 두가지를 알게 되었는데 우리가 입력 받을때 굳이 list 를 사용해 받을 필요가 있는가 였다. list 를 사용 안하더라도 map 만으로도 충분히 문제를 구현할 수 있었고 우리는 len() 을 사용해 값을 구하기 때문에 사용한걸로 결론이 났다. 또 range(2, 2) 에 대해서 알게되었는데 우리가 2를 넣어도 중첩된 반복문에 들어가지 않는것 같아서 시작된 의문이었다. 결과적으로 range(2, 2) 두 인자가 같은 수일때는 루프에 들어가지 않는다. ..
2023.05.26