본문 바로가기

파이썬 공부

(파이썬) 백준 1004번 : 어린 왕자 - 컴도리돌이 문제 어린 왕자는 소혹성 B-664에서 자신이 사랑하는 한 송이 장미를 위해 살아간다. 어느 날 장미가 위험에 빠지게 된 것을 알게 된 어린 왕자는, 장미를 구하기 위해 은하수를 따라 긴 여행을 하기 시작했다. 하지만 어린 왕자의 우주선은 그렇게 좋지 않아서 행성계 간의 이동을 최대한 피해서 여행해야 한다. 아래의 그림은 어린 왕자가 펼쳐본 은하수 지도의 일부이다. 빨간 실선은 어린 왕자가 출발점에서 도착점까지 도달하는데 있어서 필요한 행성계 진입/이탈 횟수를 최소화하는 경로이며, 원은 행성계의 경계를 의미한다. 이러한 경로는 여러 개 존재할 수 있지만 적어도 3번의 행성계 진입/이탈이 필요하다는 것을 알 수 있다. 위와 같은 은하수 지도, 출발점, 도착점이 주어졌을 때 어린 왕자에게 필요한 최소의 행성.. 더보기
(파이썬) 백준 10171번 : 고양이 - 컴도리돌이 코드 더보기
(파이썬) 백준 1002 번 : 터렛 - 컴도리돌이 문제 조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다. 이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다. 조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 이루어져 있다. 한 줄에 x1, y1, r1, x2, y2, r2가 주어진다. x1, .. 더보기
(파이썬) 백준 2675번 : 문자열 반복 - 컴도리돌이 문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력 각 테스트 케이스에 대해 P를 출력한다. 예제 입력 2 3 AB.. 더보기
(파이썬) 백준 11653번 : 소인수분해 - 컴도리돌이 문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. 코드 요번 문제는 처음 풀때 정말 간단하게 풀어서 제출을 했는데,, 시간 초과가 뜨는 바람에 어떻게 풀어야하지 고민이 엄청 많았다 ㅠㅠ 초기에 N값에서 초기에 1 값이 나오는 경우를 생각 못하고 반복문에서 N ==1 일 때 break를 거는 바람에 틀린 거 같다... N == 1일 때 조건을 없애니 다행히 성공으로 마무리를 지었습니다! :-) 다음 포스팅에서 만나요! 더보기
(파이썬) 백준 1934번 : 최소공배수 - 컴도리돌이 문제 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다. 두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개의 줄에 걸쳐서 A와 B가 주어진다. (1 ≤ A, B ≤ 45,000) 출력 첫째 줄부터 T개의 줄에 A와 B의 최소공배수를 입력받은 순서대로 한 줄에 하나씩 출력한다. 예제 입력 3 1 45000 6 10 13 17 예제 출력 45000 30 221 코드 초기 풀이(시간 .. 더보기
(파이썬) 백준 10988 : 팰린드롬인지 확인하기 문제 알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오. 팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다. 입력 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. 출력 첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다. 예제 입력 1 level 예제 출력 1 1 예제 입력 2 baekjoon 예제 출력 2 0 코드 요번 팰린드롬 문제는 만약에 다른 c언어나 자바로 한다면 매우 까다로운 문제지만 파이썬으로 하면 코드가 정말 간단하답니다. 저는 일단 입.. 더보기
(파이썬) 백준 1789 : 수들의 합 - 컴도리돌이 이번 문제는 생각보다 까다로운 문제였다. 일단 문제를 문제를 풀기 전에 문제를 이해하는 데에 오래 걸렸다. 일단 문제를 이해해보면 첫째 줄에서는 예제 입력을 200으로 했다. 그러면 주어진 범위(1≤S≤4,294,967,295)에서 N개의 자연수의 합으로 S를 만들어야 한다. 그러면 경우의 수가 1 + 199 1 + 2 + 197 ... 문제의 풀이는 가장 많은 수를 사용해야 하기 때문에 for문을 사용하여 S 값을 비교하면서 하였다. 여기서 문제는 값이 S보다 커질 때였다. 만약에서 S보다 커질 경우에는 자연수의 합에서 중간의 값만 빼면 되기 때문에 for 문을 돌렸을 때 N의 최댓값에서 하나만 빼주면 된다. 예를 들면 53을 입력값을 넣을 경우 for문으로 1부터 합을 구하면 53이라는 수로 딱 안 .. 더보기