백준

[Baekjoon 14915] 진수 변환기 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/문제 주어진 정수 둘 중 앞 정수를 뒷 정수의 진법으로 바꾸어 출력하는 문제이다.주어진 정수들은 모두 10 진수이고, 변환해야 하는 진법은 2 진법 이상, 16 진법 이하이다. 풀이 최대 16 진법까지 가능하고, 10은 A, 11은 B, 12는 C, 13은 D, 14는 E, 15는 F를 사용하기 때문에 미리 리스트를 만들어서 사용하면 좋다.주어진 정수를 주어진 진수로 나눠주고 나머지를 변환하고 정답 리스트에 추가한다. 반복하여 주어진 정수를 변환하는 것이 끝난다면 join 을 사용하여 변환된 정수 리스트를 문자열로 출력한다.가장 처음 주어진 변환해야 하는 정수가 0 이라면 진수와 상관없이 0 을 출력하면 되므로 예외처리 해준다. 코드 decimal..
[Baekjoon 31713] 행운을 빌어요 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/31713문제 각 케이스들에서 현재 있는 줄기와 잎의 개수가 주어진다.이에 대해 각 줄기가 3개 또는 4개의 잎만 가지도록 하기 위해 추가해야 하는 최소 줄기, 잎 개수를 구하는 문제이다. 풀이 케이스에 따라 경우의 수는 크게 세 가지가 나올 수 있다. 아무것도 추가해주지 않거나, 잎을 추가해주어야 하거나, 줄기를 추가해주어야 한다.추가가 필요 없는 경우주어진 잎 개수가 줄기 개수의 3배 이상 4배 이하라면 조건에 만족하므로 추가할 필요가 없다잎을 추가해주어야 하는 경우주어진 잎 개수가 줄기 개수의 3배 미만이라면 잎 개수가 줄기 개수의 3배가 되도록 추가해주면 된다.줄기를 추가해주어야 하는 경우주어진 잎 개수가 줄기 개수의 4배를 초과한다면 줄기..
[Baekjoon 31263] 대한민국을 지키는 가장 긴 힘 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/31263문제 주어진 남은 복무일이 적혀있는 페이퍼를 보고 해당 페이퍼를 작성한 병사 수의 최솟값을 출력하는 문제이다.병사들의 복무 일수가 641일이기 때문에 남은 복무일 수는 1 이상 641 이하이다. 풀이 전역일 페이퍼에 적혀있는 수는 자르게 되면 1 이상 641 이하이고, 불필요한 0이 없어야 한다.조건을 생각해본다면 전역일 페이퍼 시작은 0이 아닌 수이고, 0이 세 번 연속 나올 수 없다.각 복무일을 끊어주면서 가능한지 불가능한지 생각하면서 가능한 남은 복무일이 많이 나오도록 계산한다면 전역일 페이퍼를 적은 최소 인원을 계산할 수 있다. 예를 들어 전역일 페이퍼가 21993 이라면 2일보다 21일이 길고, 21일보다 219일이 기므로 219..
[Baekjoon 26264] 빅데이터? 정보보호! | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/26264문제 주어진 문자열에 bigdata 와 security 라는 단어가 각각 얼마나 있는지 확인하는 문제이다. 풀이 간단하게 count 함수를 사용하여 주어진 문자열에 bigdata 와 security 가 얼마나 있는지 확인할 수 있다.확인하고 비교한 후 조건에 맞게 출력하면 된다. 코드 student = int(input())memo = input()bigdata = memo.count('bigdata')security = memo.count('security')if bigdata == security: print('bigdata? security!')elif bigdata > security: print('bigdata?')el..
[Baekjoon 9493] 길면 기차, 기차는 빨라, 빠른 것은 비행기 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/9493문제 거리와 기차의 속도, 비행기의 속도가 주어졌을 때 얼마나 비행기가 빠르게 도착하는지 구하는 문제이다. 풀이 주어지는 속도는 시속인데 마지막 정답을 출력할 때는 초까지 나타내야 하기 때문에 속도를 초속으로 바꿔준다.시간은 거리 나누기 속도이므로 비행기와 열차의 시간 차이는 아래와 같이 계산할 수 있다.$$ \frac{distance}{train} - \frac{distance}{air} = time $$$$ \frac{distance(air - train)}{air \times train} = time $$계산된 시간은 비행기와 열차의 시간 차를 초로 나타낸 것인데 이걸 시, 분, 초로 계산해서 출력하면 된다.출력 형식은 분과 초는 두 ..
[Baekjoon 5698] Tautogram | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/5698문제 문장의 모든 단어가 같은 글자로 시작하면 Tautogram 이라고 한다.주어진 문장이 Tautogram 인지 판별하는 문제이다. 풀이 map 과 split 을 이용해서 단어들을 끊어주고, 각 단어들이 같은 글자로 시작하는지 확인하면 되는 간단한 문제이다. 주의해야 할 것은 주어지는 문장은 대소문자가 구분되어 있지만 단어들을 검사할 때는 대소문자 구분없이 검사해야 한다. 따라서 입력받을 때 upper 나 lower 을 통해 문장 전체를 대문자나 소문자로 변환해주는 것이 좋다.단어들을 검사할 때는 단어를 [0] 으로 인덱싱하여 첫 글자와 비교해도 좋지만, startswith 를 통해서 비교하는 것이 명확하게 시작점을 비교할 수 있기 때문에..
[Baekjoon 5692] 팩토리얼 진법 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/5692문제 주어진 수가 팩토리얼 진법으로 표현된 수일 때 이를 10 진법으로 바꿔주는 문제이다.10 진법은 $ i $ 번째 자리의 수가 $ a $ 일 때 이를 $ a \times 10^i $ 로 본다면 팩토리얼 진법에서는 $ a \times i! $ 로 본다고 한다. 풀이 그대로 따라서 변환해주면 된다.주어진 수를 각 자리와 값으로 나눠주고, 위 팩토리얼 진법을 통해 계산하면 된다.첫 번째 자리부터 계산하는 것이 편하므로 주어진 수를 문자열로 입력받아 반전시켜주고, enumerate를 통해 index와 값을 가져와준다. 이때 index+1은 자리이다.가져온 값과 index+1의 팩토리얼을 곱한 것들을 모두 더해주면 10 진법으로 표현된 수를 계산..
[Baekjoon 28432] 끝말잇기 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/28432문제 끝말잇기를 한 단어들이 주어지고, 그 중 ? 에 해당하는 단어를 찾는 문제이다.후보군 중에서 끝말잇기 조건인 앞 단어의 가장 뒷 글자를 첫 글자로 가지면서, 뒷 단어의 가장 앞 글자를 마지막 글자로 가지는 단어를 찾아야 한다.단 끝말잇기에 사용된 단어는 ? 가 될 수 없다. 풀이 조건을 만족하기 위해 ? 가 등장하는 위치를 찾고 그 앞 단어의 가장 뒷 글자와 그 뒷 단어의 가장 앞 글자를 알아낸다. 단 ? 가 가장 앞에 주어지거나 가장 뒤에 주어지는 경우에는 앞 단어나 뒷 단어가 없으므로 주의해야 한다.이때 경우의 수가 다음과 같이 여러 개로 나뉘어 진다.끝말잇기 단어가 ? 하나이고, 후보 단어도 하나인 경우이 경우에는 문제의 답이 ..
[Baekjoon 1004] 어린 왕자 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/1004문제 출발점에서 도착점까지 이동하면서 최소한의 행성계만 진입/이탈하려 한다.이때 행성계를 진입/이탈하는 횟수를 구하는 문제이다.단 행성계의 경계가 서로 맞닿거나 교차하는 경우는 없고, 출발점과 도착점이 행성계 경계에 걸친 경우도 없다. 풀이 행성계의 경계가 서로 맞닿거나 교차하는 경우가 있었다면 복잡해졌겠지만 다행히 이 경우는 없다. 따라서 행성계의 진입/이탈 횟수를 구하는 것은 출발점과 도착점이 얼마나 많은 행성계 안에 있는지 구하면 쉽게 확인할 수 있다. 예를 들어서 문제에 예시 그림을 보면 출발점은 한 개의 행성계 안에 있고, 도착점은 두 개의 행성계 안에 있으므로 총 세 번의 진입/이탈이 일어난다.만약 행성계의 경계가 서로 맞닿거나 ..
[Baekjoon 27065] 2022년이 아름다웠던 이유 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/27065문제 어떤 수가 있을 때 그 수의 자기 자신을 제외한 약수들의 합이 그 수보다 크면 과잉수, 같으면 완전수, 작으면 부족수라고 한다.어떤 양의 정수 $ n $ 이 주어질 때 $ n $ 이 과잉수이면서 $ n $ 의 모든 약수가 과잉수가 아닌지 구하는 문제이다. 풀이 먼저 약수를 구하는 알고리즘을 사용해야 한다. 이 문제에서는 양의 정수만 고려하기 때문에 양수인 경우만 생각한다.양수인 경우 자기 자신보다 작으면서 자기 자신을 나누었을 때 나머지가 0 인 수를 찾으면 약수이다.이 문제의 경우 주어지는 양의 정수 $ n $ 이 5000 보다 작으므로 쉽게 나머지가 0 인 수를 찾겠다.약수를 구하여 리스트로 반환하는 함수를 구현했다면, 이 함수를..
애스터로이드
'백준' 태그의 글 목록 (3 Page)