알고리즘(42)
-
동전 0 [ Python ] [ 백준 : 11047 ]
풀이 및 회고 제가 좋아하는 그리디 문제입니다. 이 문제를 푸는데는 이코테 책이 도움이 되었습니다. 책에서 나온 거스름돈 문제와 상당히 유사했습니다. 문제를 보자마자 그 로직을 떠올릴 수 있었고 실행에 옮겼습니다. 이게왠일 한번에 통과되어 기쁨을 만끽했습니다 허허허허 # 동전 0 n, k = map(int, input().split()) coin = [] for i in range(n): coin.append(int(input())) coin.sort(reverse=True) count = 0 for i in coin: count = count + k // i # k = 4200 , i = 5000 일땐 몫이 없기떄문에 0 이들어감 # k = 4200 , i = 1000 일때 나눈 몫 4 를 count ..
2023.05.24 -
회전하는 큐 [ Python ] [ 백준 : 1021 ]
풀이 및 회고 문제가 이해가 안되서 어려웠던문제였다. 문제만 20분은 본거같습니다 ㅠ 문제를 보자마자 deque 를 이용해야겠다는 생각이 들었다. 왜냐하면 큐 2 문제를 풀었을때 시간초과가 나왔으니 이문제도 마찬가지일 것이고 무엇보다 큐이기때문이다. deque 메서드 중에 rotate 메서드가 있었다. 이 메서드는 값이 양수면 오른쪽으로 회전하고 홀수면 왼쪽회전을 하는데 이를 이용하면 쉽게 구현이 가능할 거라고 생각했다. 금방 구현한듯 싶어 기분이 좋던와중 값을찍어보니 무한루프가 되었다. 문제를 찾고 코드를 읽어보고 공책에 쓰기도 해보는데 진짜 억울하게도 if-else 가 문제였다. 분하기도하고 풀어서 기쁘기도하고 오묘한느낌.. # 회전하는 큐 # 큐의 크기 N # 뽑아내려는 수 M # M 은 N 보다 ..
2023.05.24 -
제로 [ Python ] [ 백준 : 10773 ]
풀이 및 회고 어렵거나 힘들지 않았던 문제였다. 조금씩 나아지고 있는 것 같다. insert 로 입력받아서 0 인경우 pop 해주고 아닌경우 리스트에 넣어준다. 그리고 리스트에 넣은 값을 sum() 메서드를 이용해 합쳐서 출력한다. # 제로 # k 개의 줄에 정수 1개 씩 # 정수가 0 인 경우 최근에 쓴 수를 지운다. k = int(input()) list = [] result = 0 for i in range(k): insert = int(input()) if insert == 0: list.pop(len(list) - 1) else: list.append(insert) print(sum(list))
2023.05.24 -
스택 [ Python ] [ 백준 : 10828 ]
풀이 및 회고 어렵지 않다고 생각했는데 입력부분에서 시간을 잡아먹었던 문제이다. 두가지를 입력받는 push 와 한가지를 입력받는 pop 등등 처리가 필요했다. 이부분은 sys 모듈을 이용해서 해결할 수 있는 문제였다. 그리고 동료분께 배운 bool() 메서드를 이용 하였고 문제를 풀어나가는 것이 순탄했다. 큐 2 문제를 먼저 풀어서그런지 어렵지 않았다. # 스택 # 1. n 을 입력 받는다. # 2. n 만큼 반복해 명령을 입력받는다. # 3. 명령어를 구분해 입력받는다. (push 1 , pop ...) # 4. 각 조건에 맞는 명령을 실행한다. ''' elif command[0] == 'top': if len(stack): print(stack[-1]) ''' import sys n = int(inp..
2023.05.24 -
소수 구하기 [ Python ] [ 백준 : 1929 ]
풀이 및 회고 마침 어제 베르트랑 공준 문제, 소수 관련 문제를 풀다가 메모리제한 때문에 막혀서 못풀었었다. 이번에는 소수를 극복하길 바라면서 문제를 적어나갔다. 그런데 문제는 또다시 메모리제한 때문에 막혔다. 풀면서 에라토스테네스의 체를 이용해서 풀었는데 이 방법을 사용하며 이중 반복문을 사용했는데 이 때문에 메모리 제한에 걸린것 같았다. 다른분께 제곱근을 활용해야 메모리 제한에서 벗어날 수 있단 말을 듣고 제곱근에 대해 알아봤다. 확실히 제곱근을 이용하면 연산을 절반이나 줄일 수 있다. 그래서 제곱근으로 두번째 루프를 돌면서 진행하였고 내가 좋아하는 math.ceil 을 이용해 소수점 처리를 했는데 ceil 이 올림이라 그런지 제출결과 틀렸습니다를 보게되었다. 그래서 그냥 math 를 포기하고 int..
2023.05.23 -
ACM 호텔 [ Python ] [ 백준 : 10250 ]
풀이 및 회고 문제가 굉장히 길어서 혼란스러웠던 문제였다. 눈으로만 보면 문제 이해가 안되서 주석으로 간략하게 정리했었다. 결론은 왼쪽부터 채우는 문제라는 것을 알게되고 문제를 풀었다. 이중반복문을 통해서 처음 접근했는데 조건문을 많이 넣어야해 출력하는데 어려움이 있었다. 깔끔하게 포기하고 n이 1일때부터 경우의 수를 적으며 눈으로 확인했다. 규칙을 찾으려 노력했는데 몇가지 규칙이있었다. n 과 h 를 나누면 호수가 나오는 것, 그리고 n 과 h 를 나누었을때 나머지 값이 호텔의 층수가 나온다. 신나서 백준에 제출 해보지만 계속 "틀렸습니다"가 나왔다. 뭐가문제인지 찾아보던중 꼭데기 층을 계산했을 때 값이 이상해졌다. h 6 w 12 n 12 라고 치면 n % h = 0 이 되어 버린다. 호수도 문제가 ..
2023.05.23