알고리즘(42)
-
덱 [ 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 -
영화감독 숌 [ Python ] [ 백준 : 1436 ]
풀이 및 회고 이 문제를 봤을때 문제가 정말 이해가 안되었다. 20분도 넘게 문제만 본 느낌이다. 예제에 10의 자리까지 보여줬으면 쉽게 유추할 수 있었을 것같은데 덕분에 숌만 욕했다. 최소 666이 포함되어야하고 1666, 2666, ... 6666, 6660, 6661 이런식으로 값이 올라가는 것 같았다. 문제에 대한 구현을 어려워 하던중 페어프로그래밍을 같이하시던 신범님이 list 에 666이 포함된 값을 넣어 반복해 찾는 방법으로 하면 될 것 같다고 아이디어를 내주셨고 풀이에 옮기셨다. 루프를 리스트의 크기가 n 보다 적을때까지 반복하고 루프안에서 i 가 666이 포함된 값이라면 리스트에 값을 넣는다. 그리고 리스트의 가장 마지막 값을 출력하면 정답이 나온다. # 영화감독 숌 n = int(inp..
2023.05.25 -
거스름돈 [ Python ] [ 백준 : 14916 ]
풀이 및 회고 그리디 문제이므로 큰것부터 빼는 걸로 접근하고 for 문을 사용해 문제를 풀려고 했었다. 하지만 내가생각하는 것 처럼 해가 나오지 않았고 방법을 바꿔 큰것부터가 아닌 적은것 부터 빼는 걸로하고 for 문 대신 while 문을 사용하는걸로 정했다. 2를 먼저빼주면서 카운트 해주고 5의 배수가 된다면 5를 빼고 카운트해줌으로서 값에 도달했다. 문제를 제출하고 코드를 더 바꾸고 싶어 변화를 주었고 변화를 준 코드도 정답에 도달했다. # # 거스름돈 # # 처음 작성한 코드 # n = int(input()) # coin = [5, 2] # count = 0 # while True: # if n % coin[0] == 0: # 5의 배수인 경우 # count = count + n // coin[0]..
2023.05.25 -
최소공배수 [ Python ] [ 백준 : 1934 ]
풀이 및 회고 문제를 보자마자 떠오른것이 있었다. 분명 최소공배수를 구할수 있는 메소드가 있었던거 같은데.. 그래서 math 라이브러리를 검색해 찾아보았다. lcm 이라는 메서드를 이용하면되는데 너무 쉽게 구할 수 있었다. 이 문제는 파이썬에서 쓸 수 있는 반칙같은 느낌이었다. 죄책감이 들었던 문제입니다 허허 # 최소 공배수 import math N = int(input()) for i in range(N): a, b = map(int, input().split()) t = math.lcm(a, b) print(t)
2023.05.24 -
ATM [ Python ] [ 백준 : 11399 ]
풀이 및 회고 동전 0 과 마찬가지로 그리디 문제입니다. 이 문제를 페어 프로그래밍 진행하면서 멋진 코드가 나오게 해준 팀원분께 감사합니다. 반복문에 이용하는 로직을 변수를 하나 더 선언해서 빼서 그 변수에 값을 넣는 구상을 했는데 별도 변수선언 없이 한번에 풀 수 있었다는 것이 놀라웠습니다. 알고리즘은 규칙성을 찾고 효율적으로 푸는게 정말 중요한 것 같습니다. # ATM N = input() T = list(map(int, input().split())) T.sort() for i in range(1, len(T)): T[i] = T[i-1] + T[i] print(sum(T))
2023.05.24