kokoa
취소

[BOJ] 1503 세 수 고르기

문제 요약 및 풀이 1503번: 세 수 고르기 너무 많이 틀려가며 풀었다 ㅠ 일단 푸는 방법은 브루트 포스, 다 긁어버리면 된다. 하지만 무작정 다 긁으면 TLE 난다. N이 최대 1000이고, 이것보다 조금은 큰 범위로 세제곱만큼해서 긁어야 하는데, 이걸 다 긁으면? 가뿐히 1억을 넘긴다. 따라서 몇가지 스킵 조건을 걸어서, TLE가...

[BOJ] 1484 다이어트

문제 요약 및 풀이 1484번: 다이어트 일단, 나이브하게 풀었다. ㅋㅋㅋ 풀이 코드 몇가지 간단한 생각을 하고, 나이브하게 다 긁었다. 특정 수가 제곱인지 확인하는 건, sqrt 씌우고 다시 곱해보면 된다. 어떤 수 i가 순서대로 증가할 때, \(i*i - (i-1)*(i-1) > g\) 되는 순간, 더이상 i 를 늘리면서 확...

[BOJ] 1253 좋다

문제 요약 및 풀이 1253번: 좋다 문제 조건은 심플하다. 어떤 수가 다른 수 2개로 구성되면 이는 좋은 수 이다. 좋은수 a가 있다면, 주어진 수 중 a를 모두 카운트해야 한다. 근데, 만약 그냥 단순하게 이중 반복문으로 처리한다면, WA를 신랄하게 맞을거다. d = {} # 각각 요소가 몇개 있는지 저장된 해쉬 ... an...

[BOJ] 1083 소트

문제 요약 및 풀이 1083번: 소트 처음에 어? 그냥 앞에서부터 버블 소트처럼 하면 되는거 아니야? 라는 단순한 생각을 했고, 그냥 제출했는데 바로 WA를 받았다. 골드가 그렇게 간단하지는 않죠? (ㅋㅋㅋ) 바로 떠오른 반례는 이거다 5 1 2 3 4 5 4 앞서 말한 풀이로는 2 3 4 5 1이 나오는데, 사실 답은 5 1 2...

[BOJ] 16194 카드 구매하기 2

문제 요약 및 풀이 16194번: 카드 구매하기 2 간단한 DP 문제다. [d[i] = 카드 i 개를 갖기 위해 지물해야 하는 금액의 최솟값] 위와 같이 dp 배열을 정의하고 생각하면 당연하게도 아래와 같은 점화식이 성립한다. for j in range(i) d[i] = min(d[i], d[i - j] + d[j]) 풀이 코드 I...

[BOJ] 1260 DFS와 BFS

문제 요약 및 풀이 1260번: DFS와 BFS 크게 따로 설명할 건 없다. DFS와 BFS를 구현하면 된다. (번외로, DFS와 BFS는 최대한 깔끔하게 구현하는 자기만의 코드가 있으면 좋은 것 같다.) 풀이 코드 #include <bits/stdc++.h> #define for1(s,n) for(int i = s; i<...

[BOJ] 1342 행운의 문자열

문제 요약 및 풀이 1342번: 행운의 문자열 문제 상에 주어지는 문자열의 길이는 최대 10이다. 한 문자열이 행운의 문자열인지 판단하기 위해 쭉 훑는 방법은 \(O(n), (n <= 10)\) 이다. 근데, 주어진 문자열로 만들 수 있는 모든 문자열을 나이브하게 해도 \(n!\) 이고, 최대 10!인데, 이는 \(3,628,800\) ...

[BOJ] 17598 Animal King Election

문제 요약 및 풀이 문제는 브론즈라서, 어려운 것은 아니었다. 그냥, 숏코딩이 잘된 문제라 풀이를 남긴다. 문제는 심플하다. 2명의 후보에게 9명의 유권자가 투표를 한다. 기권표는 없을 때, 누가 당선되는지를 출력하면 된다. 물론, 하나하나 표를 카운트하고 더 많이 표를 받은 동물(후보)를 도출해도 된다. 하지만 주어진 투표 내용을...

[TIL - Python] Spread operator

Spread operator 스프레드 연산자는 배열, 문자열, 객체 등의 Iterable 객체를 개별 요소로 분리해주는 연산자를 말합니다. 주로 JS에서 ... 을 쓰면서 한번씩 보게 되는데, Python에서도 있고, 활용할 수 있다는걸 이제서야 알게 되었습니다. (ㅋㅋㅋ) 일단 아래와 같이 활용했습니다. 한 줄에 공백을 구분으로 숫자 여러개 ...

[BOJ] 8989 시계

문제 요약 및 풀이 8989번: 시계 되게 간단한 실버 문제. 각 시각에 따른 시침, 분침의 각도를 알아낸다. 사이각을 구한다(이때 각도가 2개다. 따라서 이 중에서 최소를 선택한다.) 이 사이각에 따라 정렬하고, 답을 도출한다. 풀이 코드 for i in range(int(input())): L = input().split...