목록전체 글 (99)
줴림이 공부하줴림
[백준 1463번: 1로 만들기]👉 https://www.acmicpc.net/problem/1463 이번 문제도 다이나믹 프로그래밍(DP)을 사용한 문제였다. 하지만 DP에 익숙치 않아 이번에도 여러 질문 게시판과 인터넷의 도움을 받아 문제를 해결했다... Bottom-Up인 건 알겠는데 도대체 구현을 어떻게 시도해야 하는지, 아직도 그 접근이 너무 어렵다. 이 문제도 나중에 다시 시도해야 할 듯 하다.'''문제: 연산을 사용하는 횟수의 최솟값 구하기정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.1) X가 3으로 나누어 떨어지면, 3으로 나눈다.2) X가 2로 나누어 떨어지면, 2로 나눈다.3) 1을 뺀다.'''# DP 사용하기n = int(input())dp = [0] * (n+1)f..
[백준 1003번: 피보나치 함수]👉 https://www.acmicpc.net/problem/1003 처음엔 그냥 피보나치 수열을 구하는 함수를 그대로 구현해서 약간 비틀면 문제를 풀 수 있을 거라고 생각했다. 근데 시간 초과가 계속 나서 뭐가 문제인지 찾아보았다.문제에서 요구하는 것은 주어진 코드를 실행했을 때의 결과를 빠르게 구하라는 것이지, 코드 자체를 그대로 실행하라는 의미가 아닙니다. 이 코드 자체는 N이 크면 시간 초과가 날 정도로 비효율적으로 설계가 되어있기 때문에, 답을 더 빠르게 구해서 제한 시간 내에 출력이 가능하게 하는 방법을 생각해야 합니다....라고 질문 게시판의 누군가가 코멘트 단 걸 보고 다시 코드를 작성하기 시작했다. 피보나치 수열을 구현하는 게 아니라면 어떻게 해야할까..
[백준 1966번: 프린터 큐]👉 https://www.acmicpc.net/problem/1966 이번 문제는 queue를 사용해서 인쇄 순서를 알아내는 문제였다. 대충 원리는 이해했는데, queue를 쓰는 게 익숙치 않아서 여러 인터넷과 질문 게시판을 이용했다. 늘 그랬듯이...'''문제: Queue에 있는 문서의 수와 중요도가 주어졌을 때, 어떤 한 문서가 몇 번째로 인쇄되는지 알아내자.ex) A B C D / 2 1 4 3 → C D A B- 테스트케이스의 첫 번째 줄: 문서의 개수(N) + 몇 번째로 인쇄되는지 궁금한 문서가 현재 Queue에서 몇 번째에 놓여 있는지(M)- 두 번째 줄: N개 문서의 중요도 (1 '''from collections import dequeT = int(input..
[백준 1037번: 약수]👉 https://www.acmicpc.net/problem/1037 이번 문제는 소수를 구하는 문제였다. 예제 입력을 잘 보면, 가장 작은 약수와 가장 큰 약수를 곱했을 때 구하고자 하는 N이 나오는 걸 알 수 있었다. '그렇다면 약수들을 리스트로 받고, 그 리스트 안에서 최솟값과 최댓값을 구하면 되지 않을까?' 하는 마음으로 코드를 작성했다. 다행히 한 번에 통과할 수 있었다.'''문제: 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램 작성하기- 첫째 줄: N의 진짜 약수의 개수 (- 둘째 줄: N의 진짜 약수 (중복 x)'''K = int(input()) # 진짜 약수의 개수n_div = list(map(int, input().split())) ..
[백준 1929번: 소수 구하기]👉 https://www.acmicpc.net/problem/1929 이번 문제는 1978번 문제와 비슷한 '소수 구하기' 문제였다. 당연히 비슷하게 풀면 될 줄 알고 코드를 작성했는데 시간 초과가 발생했다. 입력의 문제인가 싶어서 'input()'을 'sys.stdin.readline()'으로 바꾸었는데도 똑같은 문제가 발생...'''문제: M 이상 N 이하의 소수를 모두 출력하는 프로그램'''import sysM, N = map(int, sys.stdin.readline().split())def isPrime(number): # 소수: 1과 자기자신만 약수 for i in range(2, number): if number % i == 0:..
[백준 1978번: 소수 찾기]👉 https://www.acmicpc.net/problem/1978 랩 세미나 준비하랴 논문 주제 확장하랴 밤을 새던 날이 지나고, Day6 팬미팅까지 다녀온 이후에야 겨우 다시 백준을 시작할 수 있었다. Day6 보고 왔으니까 다시 힘내서 공부해야지!!'''문제: 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램 작성하기'''N = int(input())number = list(map(int, input().split())) # ex) 1 3 5 7answer = 0 # 소수 개수 저장# 소수: 1과 자기 자신으로만 나눠진다.def isPrime(a): if a == 1: return False for i in..
[백준 1158번: 요세푸스 문제]👉 https://www.acmicpc.net/problem/1158 문제를 처음 딱 보고 든 생각은 저게 무슨 말인가 하는 것이었다. 텍스트만 이해하려고 계속 뚫어져라 보고 있으니, 전혀 이해가 가지 않았다. 비가 와서 그런가 정말... 그래서 손으로 직접 끄적이면서 이해하려고 노력을 했다.대충 이런 말이었다. 큐를 사용하면 쉽게 해결할 수 있었다. 그럼에도 어떻게 하는지 영 감을 못 잡아서 인터넷과 질문 게시판의 도움을 받았지만...'''문제: 순서대로 K번째 사람을 제거해서 N명의 사람이 모두 제거될 때까지 계속한다.ex) (7, 3) → '''from collections import dequeN, K = map(int, input().split())queue..
[백준 9012번: 괄호]👉 https://www.acmicpc.net/problem/9012 이건... 대학교 2학년 자료구조 때부터 정말 많이 봐왔던 문제... 하지만 많이 봐온 것과 알고리즘을 완벽히 파악한 건 다른 법... 코드 작성하면서 논리 오류가 중간중간 많이도 발생했다.'''문제: 괄호 문자열이 VPS인지 아닌지 판단해서 YES or NO로 나타내기'''T = int(input()) # 테스트 케이스 개수for test_case in range(T): ps = input().strip() stack = [] # 빈 스택 ('('만 넣을거임) for char in ps: if char == '(': stack.append..