구현 156

[백준 21612] Boiling Water [Python]

풀이 물이 끓기 시작하는 온도(B)를 입력받아서, 기압(P)과 이를 통해 알 수 있는 해수면으로부터의 위치를 출력해주면 된다. 소스코드 소스코드 보기 출처 21612번: Boiling Water At sea level, atmospheric pressure is 100 kPa and water begins to boil at 100◦C. As you go above sea level, atmospheric pressure decreases, and water boils at lower temperatures. As you go below sea level, atmospheric pressure increases, and water boils www.acmicpc.net

[백준 21631] Checkers [Python]

풀이 흰/검정 색 체커칩으로 탑을 쌓아서 얼룩말 줄무늬를 만들때 검정색 줄의 최대 갯수를 구하는 문제이다. 검정색 줄의 최대 갯수를 구할 때, 연속된 부분은 한 개로 취급한다는 점을 유의하자. 흰 색(a)이 검정색(b) 이상이라면 b개만큼 최대로 만들 수 있다. 만약 그렇지 않다면 검정색은 겹치는 구간이 생길것이고, 결국 흰색(a) + 1 개만큼의 줄무늬만 만들어진다. 소스코드 소스코드 보기 출처 21631번: Checkers The only line of input contains two integers $a$ and $b$ --- the number of white and black pieces, respectively ($0 \le a, b \le 10^{18}$). www.acmicpc.net

[백준 3932] Unreliable Messengers [Python]

풀이 어떤 문자가 암호화 되어 왕에게 도착하는데, 그 과정은 아래와 같다. J : 모든 문자를 왼쪽으로 회전 C : 모든 문자를 오른쪽으로 회전 E : 문자의 절반을 서로 바꿈 (문자 수가 홀수이면 가운데 문자는 냅둔다) A : 문자를 뒤집는다 P : 문자의 내용 중 숫자만 1씩 증가, 9일 경우 0이 된다. M : 문자의 내용 중 숫자만 1씩 감소, 0일 경우 9가 된다. 이러한 암호와 과정을 함수로 미리 만들어두자. 아래 코드는 문자를 전달받아 위의 암호화 과정에 따라 암호화한 문자를 반환하는 함수들이다. 이렇게 암호화된 문자가 왕에게 도착하고, 왕은 암호화된 문자를 다시 복호화해 원본 문자를 확인하고자 한다. J는 C와, P는 M과 반대로, A와 E는 그대로 유지한채 복호화를 진행해주면 된다. 복호..

[백준 17106] 빙고 [Text]

풀이 빙고를 풀면 된다. 뭔... 구분을 위해 아래와 같이 표를 만들었다. 우선 조건없이 색칠 가능한 칸을 찾아보자. 이제부턴 추리를 해야한다. C1이 참이라 가정을 해보자. A1, B2, C3, D4, E5가 참이여야 한다. B2에 의해 최소 한개의 세로 빙고줄이 있어야 하지만, B1에 의해 E1은 색칠될 수 없고, D3의 조건에 부합하지 못해 결국 아무런 세로 빙고줄이 만들어지지 않는다. C1이 아니므로 불가능 표시(검정색)를 해주었고, 다음으로 A1이 성립하지 않는경우로 추리해보겠다. E2는 진행에 따라 다르니 일단 C4가 참이라고 가정하고 계속 진행해보겠다. E2와 E3만 성립한다면, B2는 참이다. 일단은 아직까지는 전부 성립한다. 남은 칸들에 대해 진행을 해보자. D3이 성립하는지 살펴보자. ..

[백준 18110] solved.ac [Python]

풀이 정렬된 점수들의 절사평균을 구하는 문제이다. 가장 작은 15%의 인원과, 가장 큰 15%의 인원을 제외한 후 나머지 인원에 대해 평균을 구한 후 반올림을 해서 출력해주면 된다. 문제는 단순하지만 Python을 사용하다보니 예상치 못한 복병들이 많았다. 우선 첫 번째로 주어지는 점수들의 개수가 최대 3 x 10^5 이다. 실버 난이도의 문제답지 않게 많은 입력이 주어진다. 빠른 입출력을 해주자. 그 다음으로는 전체 인원에 대한 절사평균이 성립하지 않는 경우다. 즉, 인원이 너무 적어 절사평균을 구하기 위해 제외해야할 인원이 적은 경우이다. 15%에 해당하는 인원의 반올림한 값이 0보다 큰 경우에만 인원을 제외시켜 주자. 다른 하나는 Python의 round()의 작동 방식에 대한 문제다. 일반적으로 ..

[백준 26530] Shipping [Python]

풀이 종류와 갯수, 가격을 입력받아서 총 가격을 출력해주면 되는 문제다. 종류를 기억할 필요는 없으니 갯수와 가격으로 총 가격만 빠르게 구해주어 소수점 둘째자리까지 출력해주자. 소스코드 소스코드 보기 출처 26530번: Shipping The first line will contain a single integer n that indicates the number of data sets that follow. Each data set will start with a single integer x denoting how many items follow. The next x lines consist of a string, and integer, and a floating point numb www.acmic..

[백준 26531] Simple Sum [Python]

풀이 식과 답이 주어졌을 때, 식의 결과가 주어진 답과 일치하는지 판별하면 되는 문제다. 식에는 항상 두 수와 하나의 부호가 주어지기 때문에 문자열 분리를 통해 결과를 얻을 수 있지만, Python에서는 string을 입력받아 실행시키는 eval func를 지원하기 때문에 간단히 풀이할 수 있다. 소스코드 소스코드 보기 출처 26531번: Simple Sum You have hired someone to help you with inventory on the farm. Unfortunately, the new cowhand has very limited math skills, and they are having trouble summing two numbers. Write a program to dete..

[백준 27590] Sun and Moon [Python]

풀이 다음 일식이 언제 일어나는지 연도를 구하면 되는 문제다. 입력으로는 태양과 달에 대해 몇 년전에 일식이 일어나는지와, 태양과 달이 한 바퀴 공전하는데 얼마나 걸리는 지가 주어진다. 즉, 공전주기는 ys, ym이기 때문에 초기 공전은 ys - ds, ym - dm으로 계산해주어야 한다. 대소비교를 통해 공전주기를 더해주면서 일식이 일어나는(두 연도가 일치하는) 시점까지 반복문을 돌려주자. 입력은 5000년 이내에 일식이 일어나도록 주어지므로 일치 여부만 판단하면 된다. 소스코드 소스코드 보기 출처 27590번: Sun and Moon You recently missed an eclipse and are waiting for the next one! To see any eclipse from your ..