분류 전체보기

    [백준] 곱셈 1629 - 파이썬(Python)

    문제 자연수 A를 B번 곱한 수를 알고 싶다. 단 구하려는 수가 매우 커질 수 있으므로 이를 C로 나눈 나머지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. 출력 첫째 줄에 A를 B번 곱한 수를 C로 나눈 나머지를 출력한다. 예제 입력 1 10 11 12 예제 출력 1 4 Solution B가 크기 때문에 2147483647번 곱하면 시간초과가 나므로 분할 정복이 필요하다. 1. b가 짝수인지 홀수인지 체크한다. 2. b가 짝수라면 A^B = (A^B/2)^2 와 같다. 3. b가 홀수라면 A ^B = (A^B/2)^2 * A 와 같다. def solution(a, b, c): i..

    [Python] ord 함수와 chr 함수

    ord(문자) 하나의 문자를 인자로 받고 해당 문자에 해당하는 유니코드 정수를 반환 ord('a')를 넣으면 정수 97을 반환 chr(정수) 하나의 정수를 인자로 받고 해당 정수에 해당하는 유니코드 문자를 반환 인자(정수)의 유효 범위는 0 ~ 1,114,111 (16진수 0x10 FFFF) chr(97)을 하면 문자 'a'를 반환

    [Python] sys.stdin.readline()

    반복문으로 여러줄 입력받는 상황에서는 input() 대신에 sys.stdin.readline()을 사용하는 것이 시간 복잡도를 줄일 수 있음 import sys T = int(input()) #Test case for i in range(T): a,b = map(int, sys.stdin.readline().split()) print(a+b)

    [백준] 3460 이진수 (🥉 브론즈 3티어) - 파이썬(Python)

    for _ in range(int(input())): n = int(input()) i = 0 while n > 0: if n % 2 == 1: print(i, end = ' ') n = n // 2 # 나누기 연산 후 소수점 이하 버리기 i += 1 for문과 in 사이에 변수를 넣을 때 n 만큼 반복하게 하기 위함 언더바(_)로 사용 가능하다

    [프로그래머스] 신고 결과 받기 level1 - 파이썬(Python)

    문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고, k = 2..

    [프로그래머스] k진수에서 소수 개수 구하기 level2 - 파이썬(python)

    문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P처럼 소수 양쪽에 아무것도 없는 경우 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다. 예를 들어, 101은 P가 될 수 없습니다. 예를 들어, 437674을 3진수로 바꾸면 211020101011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 왼쪽부터 순서대로 211, 2, 11이 있으며, 총 3개입니다. (211, 2, 11을 k진법으로 보았을 때가 아닌, 10진..

    [Python] 소수 판별 알고리즘

    16의 약수들을 일렬로 나열하면 1, 2, 4, 8, 16이 된다. 중간값 4를 기준으로 양 옆을 보면 약수들이 서로 대칭되고 있음을 확인할 수 있다. (1 * 16 = 16 * 1, 2 * 8 = 8 * 2) 다시말해, 만약 우리가 16의 약수를 찾고 싶다면 16의 약수의 중간값을 기준으로 한 쪽만 검사를 하더라도 다른 쪽의 약수들을 알 수 있다. 여기서 중간값은 찾고자하는 수의 제곱근 값으로 가정해 처리할 수 있으며, 이 제곱근 값을 기준으로 왼쪽에 약수가 하나도 존재하지 않는다면 제곱근 값 기준 오른쪽에도 약수가 존재하지 않는다고 확신할 수 있다. 이를 통해 우리는 기존 for문이 2에서 N-1까지 돌았던 것을 2에서 N의 제곱근까지만 돌도록 처리해주어 연산 횟수를 절반에 가깝게 줄여줄 수 있다. ..

    [Python] 시간 계산하기 datetime.strptime()

    datetime.strptime(): %H, %M, %S에 시, 분, 초 문자열을 저장한다. 두 시간 문자열이 시간 형식으로 저장되기 때문에 시간 간격을 계산할 수 있다. import datetime time_1 = datetime.strptime('05:00:00',"%H:%M:%S") time_2 = datetime.strptime('10:00:00',"%H:%M:%S") time_interval = time_2 - time_1 print(time_difference) 5:00:00

    [Python] 문자열 분리 .split

    ▼ split 문법은 다음과 같습니다. 문자열을 나눌 때 구분자는 seq 파라미터로 입력합니다. maxsplit 는 나누고 싶은 개수를 정할 때 사용합니다. 예제를 통해서 사용 방법을 알아 보겠습니다. str.split(seq=none, maxsplit=-1) ▼ maxsplit 분리할 문자 개수를 지정할 때 사용합니다. 만약 1을 입력하면 maxsplit + 1 더해 져서 2개로 분리가 됩니다. maxsplit 으로 값을 입력하지 않으면 기본값 -1 이 들어갑니다. 분리하는 순서는 앞에서 차례대로 입니다. 예제에서는 maxsplit=2 를 입력했습니다. 분리되는 개수는 3개가 됩니다. 나머지 하나는 분리되지 않은 채 남습니다. >>> '1,2,3,4'.split(',', maxsplit=2) ['1',..

    [프로그래머스] 양궁대회 Level2 - 파이썬(python)

    [프로그래머스] 양궁대회 Level2 - 파이썬(python)

    문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다.카카오배 양궁대회 운영위원회는 한 선수의 연속 우승보다는 다양한 선수들이 양궁대회에서 우승하기를 원합니다. 따라서, 양궁대회 운영위원회는 결승전 규칙을 전 대회 우승자인 라이언에게 불리하게 다음과 같이 정했습니다. 어피치가 화살 n발을 다 쏜 후에 라이언이 화살 n발을 쏩니다. 점수를 계산합니다. 과녁판은 아래 사진처럼 생겼으며 가장 작은 원의 과녁 점수는 10점이고 가장 큰 원의 바깥쪽은 과녁 점수가 0점입니다. 만약, k(k는 1~10사이의 자연수)점을 어피치가 a발을 맞혔고 라이언이 b발을 맞혔을 경우 더 많은 화살을 k점에 맞힌 선수가 k 점을 가..