본문 바로가기

728x90

알고리즘 예시

(13)
[Baekjoon] 백준 #11653번 파이썬 해답 baekjoon online judge의 단계별로 풀어보기 중 수학 부분입니다. 기본 수학 2, 일명 소인수분해 입니다. 분명 기본 수학이라고 되어있지만, 기본 단계는 아닌것 같습니다. 문제부터 한번 보겠습니다. 내용은 자체는 심플합니다. 문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력/출력 입력 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 해답 N = int(input()) if N == 1: print('') else: for i in range(2,N+1): while N%i == 0: print(i) N = N / i 아래는 초등수학 과정..
[Baekjoon] 백준 #2292번 파이썬 해답 통칭, 벌집문제입니다 백준의 단계별로 풀어보기 → 기본 수학1 부분에 위치하고 있습니다. 문제를 한번 읽어보겠습니다. 문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지 (시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력 부분 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력 부분 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다. 입/출..
[Baekjoon] 백준 #1316번 파이썬 해답 백준 단계별로 풀어보기. 문자열의 마지막 순번입니다. https://www.acmicpc.net/problem/1316 문제 자체는 길지 않지만, 그안에 들어있는 논리나 해결구조는 결코 짧지 않은 구조였습니다. 백준의 문제설명부터 천천히 읽어보겠습니다. 문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 이번 문제는 예시가 중요합니다. 예제 입력 1 3 happy ..
[Baekjoon] 백준 #4344번 파이썬 해답 백준 알고리즘 단계별로 풀어보기의 1차원 배열, 아홉번째, 문제입니다. 먼저 문제를 한번 읽어보겠습니다. 문제 제시 출력 부분에서 소수점 셋째 자리까지 출력해야 하는 것을 확인하실 수 있습니다. 이쯤에서 format, 혹은 F-스트링을 써야 한다는 생각이 들었으면 합니다. f'{p:.3f}%' 입력 예시도 보겠습니다. 정답 공개 C = int(input()) B=[] for _ in range(C): A = list(map(int, input().split())) av = sum(A[1:])/ A[0] # 평균 c = 0 for i in A[1:]: if i > av: c = c+1 p = (c / A[0])*100 # 퍼센트에이지 계산 print(f'{p:.3f}%') # 소숫점 형태로 변환함 (F-스..
[Baekjoon] 백준 #10871번 파이썬 해답 10891번 백준의 단계별 풀어보기 중 1차원 배열에 들어있는 문제입니다. 배열에 대한 사전지식이 없으면 '어?' 할 수 있는 알고리즘입니다. 1차원 배열에 대해서 기초적인 지식을 확인하는 부분입니다. 필자의 게시글 중 파이썬의 응용단계, numpy편에서 이에 대해 다룬적이 있습니다. https://astart.tistory.com/20 파이썬_응용단계 ep.2 Numpy 튜토리얼 서론 추후 Pandas를 원활하게 쓰기 위해, numpy는 중간단계로서 거쳐갑니다. 왜 numpy가 필요하다고 했죠? 강력한 행렬 조작, 연산을 시작할 수 있기 때문에 필요하다고 했습니다. 즉, 목적지가 아닙 astart.tistory.com 1차원 배열은 쉽게 말해 같은 자료형으로 연속된 메모리공간을 할당하여 사용하는 것입니..
[Baekjoon] 백준 #1110번 파이썬 해답 (애국자 ver) 백준의 반복문 문제 중 while문을 사용한 사례입니다. 단계별 → 반복문에서 마지막에 위치하고 있습니다. 일단 문제를 읽어보겠습니다. 보았을때 머릿속에서 바로 팍! 떠오르진 않습니다. 중요한점은 N의 사이클 길이를 구한다는 점입니다. 생각할 시간 . . str을 써서 두자리 수를 입력했을때, 10의 자릿수와 1의 자릿수를 분리하고 이를 따로 때네어 하는 계산방법이 있을 것이라고 생각됩니다. 다만 잘 되지 않았습니다. . . 생각할 시간 x 2 . . 잠시 멈추고 굳이 str을 쓰지 않아도 두자리수를 떼내야 한다면 나눗셈을 사용해서 떼낼수 있지 않을까요. 나머지와 몫을 떼서 10을 곱하면 방법이 나오지 않을까 합니다. 몫 = N // 10 나머지 = N % 10 실제로 생각을 편하게 하기 위해서 한글로 ..

728x90