여니의 취준 준비 253

[n1713] 후보 추천하기 in python

https://www.acmicpc.net/problem/1713 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net (문제) 추천받은 학생의 사진을 사진틀에 게시하고 추천 받은 횟수를 표시하는 문제 - 비어 있는 사진틀이 있는 경우 - 비어 있는 사진틀이 없는 경우 - 현재 사진이 게시된 학생이 추천받은 경우 총 3가지의 경우의 수가 있다. 비어 있는 사진틀이 있는 경우 : 그냥 사진 추가하면 된다. 비어 있는 사진틀이 없는 경우 추천 횟수가 적은 학생의 사진을 삭제한다. 만약 추천 횟수가 적은 학생이..

[n9934] 완전 이진 트리 in python

https://www.acmicpc.net/problem/9934 9934번: 완전 이진 트리 상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래 www.acmicpc.net (처음 든 생각) 2중 for문으로 되려나... -> for문 + while문으로 시도했으나 깔끔하게 실패! 좀 더 고민하며 삽질하다가 결국 풀이 찾아보기.. 문제 자체로만 읽고 순서를 어떻게 처리해줘야하지 고민만 했는데! 다른 블로그 풀이를 보니까 이렇게 깔끔하게 풀리는 걸.. 아직 갈길이 멀다는 걸 느꼈던 하루 :) (풀이) 이 문제는 재귀함수로 풀어주면 이렇게 깔끔한..

[n17521] Byte Coin in 파이썬

https://www.acmicpc.net/problem/17521 17521번: Byte Coin 입력은 표준입력을 사용한다. 첫 번째 줄에 요일 수를 나타내는 양의 정수 n과 초기 현금 W(1 ≤ n ≤ 15, 1 ≤ W ≤ 100,000)가 주어진다. 다음 n 개의 줄에서, i번째 줄은 i일의 바이트 코인 가격을 나 www.acmicpc.net (처음 풀이) 매수 시점과 매도 시점을 먼저 파악하자 - ! 매수는 가장 쌀 때, 매도는 가장 비쌀때! 매수는 하락 곡선 -> day -> 상승곡선 , day 시점에! 매도는 상승 곡선 -> day -> 하락 곡선, day 시점에! (풀이) 첫 날엔 무조건 매수 마지막 날엔 무조건 매도 button으로 지나온 구간이 상승 구간이었는지, 하락 구간이었는지 판단..

[n16507] 어두운 건 무서워 - python

https://www.acmicpc.net/problem/16507 16507번: 어두운 건 무서워 첫 번째 줄에는 사진의 크기를 의미하는 정수 R, C (1 ≤ R, C ≤ 1,000)와 사진 일부분의 밝기 평균을 알아볼 개수를 의미하는 정수 Q (1 ≤ Q ≤ 10,000)가 주어진다. 다음 R개의 줄에 걸쳐 R×C 크기의 사 www.acmicpc.net (처음 든 생각) 이건 무조건 완탐으로 풀면 안된다는 거..? 시간초과가 뜰 것 같았다. 근데 도저히 방법이 떠오르지 않아서 힌트를 보니 누적합 문제라고 한다.. 누적합 문제 1차원 배열로는 풀어봤으나, 2차원 배열로 풀어본 기억은 없는 것 같다. 그래서 개념 정리부터 싹 하고 왔다! (누적합, 구간합 개념 정리) 구해야 하는 건 빨간 영역의 합 A..

[n2458] 키순서 in python

https://www.acmicpc.net/problem/2458 2458번: 키 순서 1번부터 N번까지 번호가 붙여져 있는 학생들에 대하여 두 학생끼리 키를 비교한 결과의 일부가 주어져 있다. 단, N명의 학생들의 키는 모두 다르다고 가정한다. 예를 들어, 6명의 학생들에 대하여 www.acmicpc.net (처음 든 생각) 그래프를 사용해야하는 것 같긴한데.. 방향그래프.. 서로 연결되어 있는 부분을 이용해야할 것 같다..? 자신에게 오는 화살표는 자신보다 키가 작은 애들한테서 오는 화살표 자신에게서 나가는 화살표는 자신보다 키가 큰 애들에게 나가는 화살표 이 화살표의 개수가 총 n-1이면, 해당 노드의 키순서는 알 수 있다. 그래서 answer+=1을 해주면 된다. dp를 이용해야하는 건가? dp가..

[n14921] 용액 합성하기 in python

https://www.acmicpc.net/problem/14921 14921번: 용액 합성하기 홍익대 화학연구소는 다양한 용액을 보유하고 있다. 각 용액은 -100,000,000부터 100,000,000사이의 특성 값을 갖는데, 같은 양의 두 용액을 혼합하면, 그 특성값은 두 용액의 특성값의 합이 된다. 당 www.acmicpc.net (처음 든 생각) dp를 이용해서 푸는 문젠가했는데 그건 아닌 것 같았다. min을 이용해서 0에 가까운 숫자를 찾으면 되는데, 위 링크에 나와있는 예제2번을 풀 때 양수로 출력되는 문제가 발생했다. 따라서 if abs(result) > abs(now) 구문을 넣어주고, result에는 원래의 값만을 집어넣었다. (풀이) import sys n = int(sys.stdi..

[n7579] 앱 in python

https://www.acmicpc.net/problem/7579 7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net (처음 든 생각) 최소비용,,, BFS인가,,, 사실 잘 모르겠다..! 그래서 고민 끝에 풀이를 봤다. (풀이 너무 찾아보는 거 아닌가 싶지만, 아무리 고민해도 모르겠어서 그냥 보고 배우는 게 낫겠다싶었다) BFS가 아니라 DP 이용하는 것! DP는 넘 어렵다아... 피보나치 수열 풀 땐 알겠는데,,, 이 문제에선 도저히 모르겠... (DP 이용 풀이) 필요한 메모리 M 바이트를 확보하기 위한 앱 비활성..

[n17478] 재귀함수가 뭔가요? in python

https://www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 문제 제목만 봐도 알 수 있는 유형 > 재귀함수로 푸는 문제 재귀횟수 : N 위 예시를 보면, 재귀횟수가 2이다. recursion(2) 호출 recursion(1) 호출 recursion(0) 호출 print('_' * (4 * (n - cnt))+ "라고 답변하였지.") : n-cnt=2 print('_' * (4 * (n - cnt))+ "라고 답변하였지.") : n-cnt=1 print(..

[n5568] 카드 놓기 in python

https://www.acmicpc.net/problem/5568 5568번: 카드 놓기 예제 1의 경우 상근이는 11, 12, 21, 112, 121, 122, 212를 만들 수 있다. www.acmicpc.net (처음 든 생각) 이건 완탐으로 풀어야하는 것 같긴 한데.. 수가 커질수록 경우의 수가 많아지고 ㅠㅠ 이럴 땐 어떻게 해야 할 지 모르겠다 일단 완탐으로 풀어보자! n개의 카드 중에 k개를 선택하는 경우의 수를 다 써봐도 규칙이 보이지 않았다 ㅠㅠ 그래서 결국 인터넷 참고! (풀이 : itertools 라이브러리) n개의 카드 중에 k개를 선택하는 거 > 순열! 순열을 떠올리지 못했다. 떠올렸더라도 permutations를 사용해본 적이 별로 없어서 풀지 못했던 문제 지금이라도 익혀두자! s..

[n18352] 특정 거리의 도시 찾기 in python

(처음 든 생각) BFS 같다.. 느낌이 1번 도시에서 2번, 3번 도시를 가야하고? 2번 도시에서 갈 수 있는 곳이 있는지, 조건을 부합하는 지 확인한 뒤 3번 도시도 확인해야 하니까!! (처음 푼 풀이) : BFS 처음에 이 문제도 EOFError를 사용해야 하는 줄 알고 좀 헤맸다. 문제 좀 잘 읽어볼 것.. BFS 알고리즘이니까, 큐를 이용해서 풀어야한다. 위 예제를 생각해보면, k=2 이다. (거리정보) 1번 도시에서 갈 수 있는 도시는 2번, 3번 따라서 큐에 2번, 3번을 넣고 방문처리를 해준다. 이때 방문처리 리스트를 통해 답을 구할 것이다. 처음엔 set()을 이용했는데, 시간초과가 떠서 ㅠㅠ popleft로 큐에서 데이터를 꺼내온다. (2번) 2번에서 갈 수 있는 도시는 3번, 4번 하..