백준/Python(5)
-
[Python] 백준 2555 (생일)
*문제에 대한 내 생각 어.....음.....그래......그냥 쉬어가는 시간 *코드 이걸 쓰는건 좀 그러니까 힌트(?)를 알려주자면, 백준 문제중 컨닝이라는 문제가 있다(https://www.acmicpc.net/problem/1014). 이 문제에 나오는 숫자들 중에 답이 있다(정확하게는 문제가 아니라 문제가 있는 페이지...)
2019.07.02 -
[Python] 백준 2869 (달팽이는 올라가고 싶다)
*문제에 대한 내 생각 만일 시간제한이 없었다면 파이썬 자습서에나 나오는 예제였을 것이다. 문제자체가 어렵지는 않지만 실수할 것들이 많아 나도 4번의 시도끝에 성공했다. *문제 풀이 -아이디어 가장 처음 이 문제를 마주쳤을 때 나오는 실수는 올라가는 거리와 내려오는 거리의 차를, 높이에 나누어 그 몫에 1을 더하는 경우다.(즉 V//(A-B) + 1) 그러나 이 경우는 중대한 문제가 있다. 아침에 올라가는데 성공하는 경우를 제외한 것이다. 만일 3M를 올라가고 1M를 내려온다면, 높이가 4일때 위의 식으로는 3이 나온다. 그러나 실제로는 2가 답이다. 다시말해 위의 식은 아침에 막대기를 다 올랐음에도, 다시 밤에 내려갔다가 다음날 다시 올라오는 구조다. 하지만 이러한 실수를 하는 경우는 거의 없을 것이다..
2019.06.11 -
[Python] 백준 1032 (명령 프롬프트)
*문제에 대한 내 생각 뭐...비교에 대한 문제다. 딱히 달 코멘트는 없다만, 왜인지 모르게 내 코드들중 이 문제를 읽어본 사람이 꽤 있었다. *문제 풀이 -아이디어 앞서 말했듯 각 입력값을 비교하는 문제다. 다만 약간의 기본상식이다만 문자열은 변경이 불가능해 다른 방법으로 출력값을 저장해야 했다. 내 경우는 리스트를 사용했다. -코드1 먼저 b라는 리스트에다 문자열을 n개만큼 집어넣어, 이차배열과 비슷한 형태를 구성했다. 그리고 출력값을 c로 두고, 이 변수에 b[0](딱히 0이 아니어도 상관없음)을 할당해 리스트화 시켰다. 이후 for문을 사용해 각 b[i]의 값과 대조했다. 입력값의 길이는 전부 같기 때문에 기준은 c의 길이로 했다. n = int(input()) b = [] for i in ran..
2019.06.11 -
[Python] 백준 15873 (공백 없는 A+B)
*문제에 대한 내 생각 문제자체는 어렵지 않았다. A와 B를 구분해서 더해주기만 하면 되는 문제였다. 중점은 A 혹은 B가 10인 경우였다. (둘 다 10이면 매우 간단) *문제 풀이 -아이디어 위에서 언급했든 중점은 둘 중 하나가 10인 경우다. 따라서 경우를 나눌 필요가 있었다. 먼저 비교적 조건문을 작성하기 쉬운 경우 두가지(둘 다 10이 아닌 경우와 둘 다 10인 경우)를 문자열의 길이를 통해 판단했다(둘 다 10이 아니면 문자열의 길이가 2, 둘 다 10이면 문자열의 길이가 4). 남은 부분은 둘 중 하나가 10일테니, 0의 위치로 다시 if문을 사용해 경우를 나누었다. 참고로 문제의 조건에서 필요없는 0은 붙지 않는다고 제한했기 때문에 0의 위치를 기준으로 문제없다. -코드 n = input(..
2019.06.11 -
[Python] 백준 2751 (수 정렬하기2)
*문제에 대한 내 생각 본 문제에 앞선 2750은 사실상 프로그래밍 예제에 불과할 정도로 쉬웠다. 그러나 주어지는 수의 개수와 범위의 차이가 해당 문제의 난이도를 급상승시켰다. 찾아보니 정렬알고리즘을 적용시켜 푼 사람들이 많았는데, 솔직히 무슨 말인지 모르겠음. (http://ejklike.github.io/2017/03/04/sorting-algorithms-with-python.html 가 그나마 설명을 잘 해놓았다.) 애초에 이걸 파이썬으로 하니까 느려터졌...지... *문제 풀이 -아이디어 내가 처음 시도했던건 sort를 사용하는 것이었는데, 당연히 시간초과가 떴다. 아무래도 개수가 많다보니 정렬에 시간이 오래걸리는 듯 하다. 그래서 든 생각은 전체 input의 리스트를 나눠서 정렬하는 것이었다...
2019.06.09