Python/Baekjoon 29

백준 1934번 문제 풀이 - 공부 하는 도비

https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 최소 공배수를 구하는 문제입니다. 제가 예전에 유클리드 호제법에 관한 내용을 포스팅한 적이 있습니다. gcd(greatest common divisor) 즉, 최대 공약수를 구하는 방법은 아래 링크를 확인해주세요. 2021.05.21 - [파이썬/프로젝트] - [파이썬] 유클리드 알고리즘(Euclidean Algorithm) - 공부하는 도비 [파이썬] 유클리드 알고리즘(Euc..

Python/Baekjoon 2021.11.01

백준 11653번 문제 풀이 - 공부하는 도비

https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 이 문제는 입력 받은 수를 소인수분해 하는 문제이고, 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력해야 한다. 소인수분해를 못하는 사람은 없을 꺼라고 생각하고, 코드를 바로 보면 우선, 큰 while문 안에 또 다른 while문을 넣었다. 첫번째 while 조건은 입력 받은 수가 1이 될 때까지 반복문을 돌리는 것이고, 두번째 while 조건은 나누는 수(d)가 입력받은 수(a)를 나누었을 때, 나머지가 0이 되도록 d를 1씩 증가시키면서, a를 나누었을 때 나머지가 0이 될 때 까지 반복문을 돌리는 것이다. ..

Python/Baekjoon 2021.10.24

백준 5355번 문제 풀이 - 공부하는 도비

https://www.acmicpc.net/problem/5355 5355번: 화성 수학 겨울 방학에 달에 다녀온 상근이는 여름 방학 때는 화성에 갔다 올 예정이다. (3996번) 화성에서는 지구와는 조금 다른 연산자 @, %, #을 사용한다. @는 3을 곱하고, %는 5를 더하며, #는 7을 빼는 연산 www.acmicpc.net 해당 문제는 특정 문자가 들어오면, 그에 맞춰 정해진 연산을 해주는 문제입니다. - @ => 3 곱하기 - % => 5 더하기 - # => 7 빼기 예제 입력 처럼, 몇개의 문자가 들어올지 모르기 때문에 미리 변수를 선언해서 값을 입력 받는 형태는 사용할 수 없을 꺼라고 생각했다. ( ex) a, b, c = map(int, sys.stdin.readline().split()..

Python/Baekjoon 2021.10.24

백준 1032번 문제 풀이 - 공부하는 도비

https://www.acmicpc.net/problem/1032 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 www.acmicpc.net 처음 이 문제를 봤을 때, 입력받은 정수 만큼 문자열을 저장한 후, 각 자리마다 모두 비교할 생각이었다. 하지만, 제일 처음 입력 받은 문자열과 그 다음 입력 받은 문자열을 비교 한 후, 예제 출력 처럼 미리 바꿔두면, 한번에 모든 문자열을 각 자리마다 비교하는 수고가 사라진다. 코드는 간단하다. 1. a 에 입력한 문자열을 리스트 형으로 바꾸어 저장한다. 2. 입력받은 정수(count)-1..

Python/Baekjoon 2021.10.22

백준 2839번 문제 풀이 - 공부하는 도비

문제를 크게 두 가지로 나눠야해요. 첫 번째는 3과 5의 적당한 곱으로 입력된 값을 만들어 내지 못할 때, -1 을 출력해야하고, 아닌 경우는 총 몇개의 봉지가 필요한지 계산해야 합니다. 이 문제를 푸는 방법은 1. 우선 5로 나눠떨어지면 그 몫을 출력해주면 되고, 2. 아닌 경우는 입력 된 값에 -3을 해주면서 봉지 +1 을 해주면 됩니다.(여기서 +1을 해주는 건, 3kg 봉지가 추가 된다는 뜻입니다.) 3. 위의 과정을 입력된 값이 0 이 될 때까지 진행해줍니다. 만약 입력된 값이 0이 되면, 반복문을 멈춰주면 되겠죠? 코드를 보면 쉽게 이해하실 수 있습니다.!

Python/Baekjoon 2021.08.20

백준 1193번 문제 풀이 - 공부하는 도비

www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 첫 번째 표를 대각선으로 한 줄씩 끊으면, 바로 위와 같은 표를 완성할 수 있습니다. 가만히 저 표를 보면, 홀수 번째 방의 데이터 양상은 아래와 같다는 걸 알 수 있습니다. 반대로, 짝수 방의 데이터 양상은 아래와 같습니다. 위에서 설명한 부분은 코드의 마지막 if 절에 해당합니다. 마지막에 홀수 방과 짝수 방을 따로 처리하는 거죠. import sys num = int(sys.stdin.readline()) tmp = num count = 0 while tmp > 0: count += 1 tmp -= count arr = list(rang..

Python/Baekjoon 2021.01.23

백준 2775번 문제 풀이 - 공부하는 도비

www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 이 문제를 딱 봤을 때, 저는 이중 리스트밖에 생각이 안 나더라고요. 3층에 4호라고 하면, 0층 부터 3층의 4호까지 거주민의 수가 쫘악 정리가 되는데 그걸 눈으로 보고 싶단 생각을 했어요. 그래서 minn이라는 함수를 짜고, 2층의 2호라고 하면 0층의 1호 2호, 1층의 1호 2호에 사는 사람들의 수가 이중 리스트에 들어가도록 했습니다. 위의 코드는 백준에 제출하기 위한 코드이고, 주석부분 풀어서 출력하게 되면 아래와 같은 결과가 나옵니다. 2번..

Python/Baekjoon 2021.01.21

백준 1712번 문제 풀이 - 공부하는 도비

www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 손익분기점 찾는 문제입니다. 간단히 몇 개를 팔아야 순 이익이 남을까? 하는 건데, 제가 처음 이 문제를 접했을 땐, 단순히 for문을 사용하면서 하나하나 +1을 하며 계산하면 되겠지라는 생각을 했는데 문제 조건을 보면, 네,, 그렇게 풀지 말라고 조건이 21억 이하의 자연수죠?ㅎㅎ.. 아마 저 처럼 생각한 사람이 많아서 정답률이 조금 낮은 거 같습니다. 남은건 식을 사용하여 문제를 푸는건데, 저는 아래 방식으로 문..

Python/Baekjoon 2021.01.06

백준 2908번 문제 풀이 - 공부하는 도비

www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 이 문제는 여러 방법으로 풀 수 있는데, 저는 총 3가지 방법을 보여드리겠습니다. 우선, 리스트나 문자열을 거꾸로 출력할 수 있는 방법에 대해 알고 있어야한다. ex) a = "34893" 이라고 했을 때, a = a[::-1]는 처음부터 끝까지 반대로를 뜻합니다. 문자열 자료형에 대해 index로 접근하는 것인데, 자세한 내용은 아래 링크를 확인해주세요! docs.python.org/release/2.3.5/whatsne..

Python/Baekjoon 2020.12.20

백준 1152번 문제 풀이 - 공부하는 도비

www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net 이 문제는 제가 약간 고민을 하고 완성한 문제입니다. 분명 문제에 나와있는 예시를 입력하면, 정확히 답이 나오지만 계속 틀렸다고 결과가 나왔습니다. 그 이유는 스페이스바로 빈칸으로 이루어진 입력을 넣게 되면, 제 소스 코드에 따르면 list의 길이만 출력하기 때문에 항상 "1" 이라는 결과가 나왔습니다. 알파벳으로 단어를 입력하지 않아도 1이라는 예외가 발생하는거죠.. 해결하는 방법은 단순했습니다. 빈칸으로..

Python/Baekjoon 2020.12.20