전체 글

·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net [풀이] 처음 각 사람이 돈 인출에 걸리는 시간을 리스트에 넣을 때 sorted() 함수를 이용해 오름차순으로 리스트를 정렬해 저장한다. temp와 res를 0으로 초기화한다. temp에는 for문을 돌 때마다 위 첨부사진의 두 번째 줄 숫자가 저장된다. res는 temp 값을 더한다. (3번째 줄) [코드] import sys if __name__ == '__main__': n = int(sys.stdin.readl..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/17219 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net [풀이] 입력값을 memo 딕셔너리에 저장한 후 Key를 이용해 Value를 찾는다. 파이썬이라 가능한 간단한 문제인듯하다.. [코드] import sys if __name__ == '__main__': n, m = map(int, sys.stdin.readline().split()) memo = {} for _ in range(n): site, pw = s..
[문제] https://www.acmicpc.net/problem/18110 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다. www.acmicpc.net [풀이] 백준 게시판에서 solvedac 계정을 발견했는데 유일하게 제출한 문제가 이거 한개라 궁금해서 풀어봤다. 왜케 쉬워?!?! 하고 풀었는데 런타임 에러가 나서 당황;; 파이썬 내장함수인 round가 생각보다 시간을 많이 잡아먹나보다 따라서 이번 문제는 round 함수를 직접 구현하는 문제이다. 그냥 반올림의 개념을 생각하면 쉽다. num의 소숫점 값이 ..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net [풀이] if kinds in closet.keys(): closet[kinds].append(costume) else: closet[kinds] = [] closet[kinds].append(costume) 의상 종류가 closet 딕셔너리에 있다면 의상을 종류에 맞게 value 리스트에 추가해..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net [풀이] 이 문제는 동적 프로그래밍으로 풀어야 하는 문제이다. 동적 프로그래밍의 개발절차는 문제의 사례에 대해 해답을 주는 재귀 관계식 정립 작은 사례를 먼저 해결하는 상향식 방법으로 문제의 사례 해결 개발절차에 따르면 재귀 관계식을 정립해야 하기 때문에 우선 숫자 사이에서 규칙을 찾아보기로 했다. 5까지 직접 계산해 규칙을 찾아보니 이전 3개의 결과를 더한 숫자가 해당 숫자의 답이 되는 것을 발견했다. 이를 이용해 검증하기 위해 문제 예제에서 나온 7을 위의 규칙으로 계산해보니 44가..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net [풀이] 수를 최솟값으로 만들기 위해서는 마이너스가 나왔을 때 가장 큰 수를 빼면 된다. 따라서 최초의 - 연산자가 나오기 전까지는 전부 더하고, - 엱산자가 나온 이후에는 전부 빼준다. '55 - 50 + 40 - 10 + 20' 을 입력으로 받았을 때 split() 함수를 통해 expression = sys.stdin.readline().strip().split('-') prin..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻 www.acmicpc.net [풀이] main 함수 graph = [[] for _ in range(n+1)] # print(graph) -> [[], [], [], [], [], []] 양방향 노드로 그래프를 만들어준다. 여기서 범위가 n+1인 이유는 노드의 번호가 0이 아닌 1부터 시작하기 때문이다. for i in range(m): a, b = map(int, s..
·문제풀이/BOJ
[문제] www.acmicpc.net/problem/5525 5525번: IOIOI N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 www.acmicpc.net [풀이] 처음에는 부분성공 코드로 제출한 후 아무리 생각해도 답을 모르겠어서 다른 사람 풀이를 찾아봤다. 성공한 코드는 문자열을 만들어서 비교하지 않고 s 내부에서 패턴을 찾아 비교하는 풀이이다. 풀이 중 이해가 안돼서 고민하던 부분을 주석에 숫자로 남겨놓았는데 1. cnt -= 1 : 일치할 경우 첫 번째 'IOI' 패턴 이후부터 검..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net [풀이] 2021.08.11 - [BOJ] - [Python] BOJ/백준 2630번 색종이 만들기 [Python] BOJ/백준 2630번 색종이 만들기 [문제] https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. ..
서채리
chaewss