728x90

전체 글 115

[백준] 1966 | 프린터 큐 [파이썬/python]

문제link: https://www.acmicpc.net/problem/1966 접근collections의 deque를 사용해 deque를 만든 후, rotate를 이용해 큐를 회전해가며 중요도가 높은 순으로 출력하도록 했다. M번째 인덱스의 값이 언제 출력되는지를 확인해야 하므로, 초기 인덱스를 함께 저장했다.rotate()에 음수를 넣을 경우 왼쪽으로, 양수를 넣을 경우 오른쪽으로 회전한다. 값을 꺼낼 때는 popleft()로 0번째 인덱스 값을 꺼내고, rotate(-1)로 왼쪽 방향으로 회전시키며 중요도를 비교했다. 코드import sysinput = sys.stdin.readlinefrom collections import dequefor _ in range(int(input())): N,..

알고리즘 2025.04.02

[백준] 11723 | 집합 [파이썬/python]

문제link: https://www.acmicpc.net/problem/11723집합을 구현하는 문제이다. 접근명령에 맞게 집합의 add, remove와 같은 동작을 수행한다.remove()의 경우 삭제하려는 key가 집합 내에 존재하지 않으면 KeyError가 발생한다. discard()는 그렇지 않다. if문으로 확인 후 존재하는 경우에만 remove()하는 대신, discard()를 사용해 remove 동작을 처리했다. 코드import sysinput = sys.stdin.readlineS = set()allS = set(range(1, 21))for _ in range(int(input())): tmp = input().split() if tmp[0] == 'add': S...

알고리즘 2025.04.02

[백준] 10845 | 큐 [파이썬/python]

문제link: https://www.acmicpc.net/problem/10845큐를 구현하는 문제이다. 접근입력받은 명령에 맞추어 큐로서 동작하도록 코드를 구현했다. FIFO에 따라 동작한다.push되는 원소는 리스트 q의 끝에 저장한다. front 인덱스 값과 rear 인덱스 값을 변수에 저장해 pop 시 별다른 원소 제거 없이 변수 값을 조정하여 처리하도록 했다. 코드import sysinput = sys.stdin.readlineq = []f = -1r = -1for _ in range(int(input())): tmp = input().split() if tmp[0] == 'push': q.append(tmp[1]); r += 1 elif tmp[0] == 'pop': ..

알고리즘 2025.04.01

[백준] 1654 | 랜선 자르기 [파이썬/python]

문제link: https://www.acmicpc.net/problem/1654주어진 랜선 K개를 잘라 같은 길이의 N개 랜선을 만들 때, 만들어질 랜선의 최대 길이를 구하는 문제이다. 접근이분 탐색을 활용한다.주어진 랜선 길이 중 가장 긴 것을 바탕으로 중간값을 구하고, 그 중간값 길이로 만들 수 있는 랜선의 개수를 구한다. 가능한 개수가 N개보다 같거나 많으면 임시 저장하고, 범위를 좁혀가며 가장 긴 길이를 찾아 출력한다. 코드import sysinput = sys.stdin.readlineK, N = map(int, input().split())LAN = [int(input()) for _ in range(K)]l, r = 1, max(LAN)ans = 0while l

알고리즘 2025.04.01

[백준] 18110 | solved.ac [파이썬/python]

문제link: https://www.acmicpc.net/problem/18110난이도에 대한 의견을 정수로 입력받아 30% 절사평균을 출력하는 문제이다.  접근30% 절사평균을 구할 때, 제외할 값의 수와 평균은 모두 반올림한다.파이썬의 round()를 사용하지 않고, 직접 반올림을 구현했다. 코드import sysinput = sys.stdin.readlinen = int(input())if n == 0: print(0) else: p = n * 0.15 p = int(p) if (p * 10) % 10

알고리즘 2025.03.31

[백준] 10828 | 스택 [파이썬/python]

문제link: https://www.acmicpc.net/problem/10828스택을 구현하는 문제이다. 접근if문으로 입력되는 명령을 구분해 처리하도록 구현했다. 코드import sysinput = sys.stdin.readlines = []for _ in range(int(input())): tmp = input().split() if tmp[0] == 'push': s.append(tmp[1]) elif tmp[0] == 'pop': print(s.pop() if s else -1) elif tmp[0] == 'size': print(len(s)) elif tmp[0] == 'empty': print(0 if s else 1) elif tmp[0] == 'top':..

알고리즘 2025.03.31

[백준] 1920 | 수 찾기 [파이썬/python]

문제link: https://www.acmicpc.net/problem/1920두 개의 자연수 목록을 받아 두 번째 목록의 숫자들이 첫 번째 목록에 존재하는지를 확인하는 문제이다. 접근처음 입력받은 자연수 목록을 set에 저장한 후, for문을 통해 두 번째 자연수를 하나씩 조회하며 결과를 출력하도록 했다. 코드import sysinput = sys.stdin.readlineN = int(input())A = set(map(int, input().split()))M = int(input())for b in map(int, input().split()): if b in A: print(1) else: print(0)

알고리즘 2025.03.31

[백준] 1676 | 팩토리얼 0의 개수 [파이썬/python]

문제link:  https://www.acmicpc.net/problem/1676 접근n!을 구한 후, 뒤에서부터 0의 개수를 세는 문제이다. 단, 0이 아닌 숫자가 나올 때까지만, 즉, 연속되어 있는 0의 개수만 센다.팩토리얼을 구한 후 for문을 통해 세는 방법도 있겠지만, 10이 곱해질 때마다 0이 늘어난다는 점에서 착안해 팩토리얼 계산 과정에서 곱해지는 5의 개수를 셈해 출력하도록 했다. 코드N = int(input())f = 5cnt = 0while N >= f: cnt += N // f f *= 5 print(cnt)

알고리즘 2025.03.31

[백준] 2609 | 최대공약수와 최소공배수 [파이썬/python]

문제link: https://www.acmicpc.net/problem/2609입력받은 두 수의 최대공약수와 최소공배수를 구하는 문제이다. 접근유클리드 호제법을 사용하면 최대공약수와 최소공배수를 쉽게 구할 수 있다.최대공약수를 먼저 구한 후, 최소공배수는 구한 최대공약수를 이용해 구했다.(n * m = 최대공약수 * 최소공배수 인 것을 활용했다.) 코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())def euc(a, b): if b > a: a, b = b, a a = a % b if a == 0: return b else: return euc(b, a) gcd = euc(n, m)lcm = n * m ..

알고리즘 2025.03.31

[백준] 28702 | FizzBuzz [파이썬/python]

문제link: https://www.acmicpc.net/problem/28702 접근입력값이 세 개 주어지는데, 적어도 한 번은 숫자가 나오기 때문에 숫자가 입력된 경우 그 숫자를 이용해 답이 될 수를 찾도록 코드를 설계했다.함수 FizzBuzz를 만들어 출력할 값을 규칙에 따라 출력하도록 했다. 코드import sysinput = sys.stdin.readlinedef fizzbuzz(i): if i % 3 == 0 and i % 5 == 0: print('FizzBuzz') elif i % 3 == 0: print('Fizz') elif i % 5 == 0: print('Buzz') else: print(i)for i in ra..

카테고리 없음 2025.03.30
728x90