본문 바로가기

백준20

[백준/파이썬3/14681] 사분면 고르기 사분면 고르기 출처다국어 문제 흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다. 점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다. 입력 첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0) 출력 점 (x, y).. 2020. 7. 4.
[백준/파이썬3/2741] N 찍기 N 찍기 문제 자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄부터 N번째 줄 까지 차례대로 출력한다. 예제 입력 예제 출력 5 1 2 3 4 5 풀이 1 2 3 A = int(input()) for i in range(1,A+1): print(i) for문과 range함수를 사용하여 문제를 풀면된다. 2020. 1. 17.
[백준/파이썬3/10952] A+B - 5 A+B - 5 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 입력의 마지막에는 0 두 개가 들어온다. 출력 각 테스트 케이스마다 A+B를 출력한다. 예제 입력 1 복사 예제 입력 1 복사 1 1 2 2 3 5 3 4 7 9 8 17 5 2 7 0 0 풀이 1 2 3 4 5 while " ": A,B= map(int, input().split()) if A== 0 and B==0: break print(A+B) 기존에 풀었던 문제와 아주 비슷하다 하지만 이 문제에서 핵심은 0 0 을 입력하였을 때 프로그램이 종료.. 2020. 1. 5.
[백준/파이썬3/1110] 더하기 사이클 더하기 사이클 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.. 2020. 1. 2.
[백준/파이썬3/1152] 단어의 개수 단어의 개수 성공 문제 영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다. 출력 첫째 줄에 단어의 개수를 출력한다. 예제 입력 예제 출력 The Curious Case of Benjamin Button 6 Mazatneunde Wae Teullyeoyo 3 Teullinika Teullyeotzi 2 풀이 정답.. 2019. 12. 29.
[백준/파이썬3/4673] 셀프 넘버 셀프 넘버 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n).. 2019. 12. 29.
[백준/파이썬3/8958] OX퀴즈 OX퀴즈 성공 문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다. 출력 각 테스트 케이스마다 점수를 출력한다. 예제 입력 1 복사 입력 출력 5 OOXXOXXOOO 10 OOXXOOXXO.. 2019. 12. 28.
[백준/파이썬3/8393] 합 풀이 A=int(input()) total = 0 for i in range(1,A+1): total+= i # total = total + i print(total) 위와 같이 간단하게 풀수있다. for 문에서 i는 어떤수를 i에 넣을지 입력받는 변수인데, range(1, A+1)라는 함수를 사용하여 1부터 A까지 숫자를 차례대로 i에 넣어서 for문을 계산한다. 주의 해야되는게 range함수에서 마지막 수는 포함하지 않는다. (A를 넣으면 A-1까지) 또한, " total += i " 는 "total = total + i" 를 줄여서 적은 것이다. (기능은 같다.) 2019. 12. 25.
[백준/파이썬3/2920] 음계 풀이 notes = list(map(int, input().split())) des = True asc = True for i in range(len(notes)-1): if notes[i] notes[i+1]: asc=False if des == False and asc == False: print("mixed") elif des == True: print("descending") elif asc == True: print("ascending") 1. 배열로 입력받고 notes 라는 리스트에 데이터를 저장 2. for문을 사용하여 배열의 길이에서 1개 뺀것 만큼 모든 배열 탐색 3. if문을 사용하여 이전보다 작거나 큰거를 판단하여 틀릴경.. 2019. 12. 24.
[백준/파이썬3/1546] 평균 풀이 N = map(int, input().split()) #작동X score = list(map(int, input().split())) total =0 for i in range(len(score)): total = total + (score[i]/max(score)*100) print(total/(i+1)) 우선 파이썬에서는 입력받는 개수가 중요하지 않으므로 첫재줄은 그냥 N을 입력 받고 따로 작동하지 않는다. score라는 배열에 값을 입력받고, 그다음에 for문을 사용하여 낮은점수를 (score[i]/max(score)*100)을 사용하여 UP시켜주면된다. 2019. 12. 21.
[백준/파이썬3/10871] X보다 작은 수 풀이 이번문제는 파이썬의 신기능을 경험한 문제! N, X = map(int, input().split()) A = list(map(int, input().split())) for i in A: if i < X: print(i, end=" ") 우선 for문을 보면 A라는 List가 들어갔다. 본인은 첫 언어가 C++라서 for문에 배열이 들어가면 당연히 배열의 크기만큼 반복 한다고 생각했는데. 배열 인덱스를 순차적으로 하나씩 열어서 그 값을 i에 입력한다. 그후에 if문에서 X와 비교. 이렇게 짧게 코드를 적을 수 있다니... 파이썬 갓갓! 2019. 12. 19.
[백준/파이썬3/2869] 달팽이는 올라가고 싶다 오답 뭐 정답률 보고 인지는 하고 있었지만, 우선 그냥 조건문(if문)을 사용하여 대충 짜보았다. A,B,V= map(int, input().split()) count = 1 while V>0: if V>0: V-=A if V>0: V+=B count+=1 print(count) 이렇게 짜도, 답이 나오기는 한다. 하지만! "시간초과" 정답 A,B,V = map(int,input().split()) k = (V-B)/(A-B) print(int(k) if k == int(k) else int(k)+1) 시간을 최대한 줄여야 되는 코드를 짜는게 관건이다. if문에서 두 변수를 비교하게 되면 비교연산결과를 기다리느라 시간이 소요될 것이다. 그래서 부등호 없이 단순히 k=(V-B))/(A-B) 식으로 한번에 .. 2019. 12. 17.