본문 바로가기

파이썬

[백준 2751] 수 정렬하기 2.py 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 백준 12단계 문제 난이도 실버 5 유형 정렬 알고리즘을 사용한다. 접근 입력받는 수의 개수 N의 범위가 1에서부터 1,000,000까지이므로 복잡도가 O(n²)인 정렬 알고리즘으로 풀 수 있던 전 문제와 달리 O(nlogn)인 정렬 알고리즘을 사용해야 한다. 파이썬 내장 함수 sort를 이용하는 방법으로 풀어보자. 풀이 파이썬 내장 함수 sort는 리스트안의 원소들을 오름차순으로 정렬해주는 함수이다. 내부적으로는 퀵 정렬 알고리즘을 사용하고 있어서 .. 더보기
[백준 2750] 수 정렬하기.py 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 백준 12단계 문제 난이도 브론즈 1 유형 구현, 정렬 알고리즘을 사용한다. 접근 입력받는 수의 개수 N의 범위가 1에서부터 1000까지이므로 복잡도가 O(n²)인 정렬 알고리즘으로 풀 수 있다. 수들을 차례로 비교하는 방법과 파이썬 내장 함수 sort를 이용하는 방법 2가지로 풀어보자. 풀이 1 정렬되지 않은 수들을 입력받아 리스트 a에 저장한다. 정렬된 수를 저장할 빈 리스트 b도 미리 만들어준다. 가장 작은 수를 리스트 a의 첫 원소인 a[0]라고 가정하고 차례로 .. 더보기
[백준 2588] 곱셈.py 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 백준 1단계 문제 난이도 브론즈 4 유형 수학, 사칙연산 접근 세자리수 곱셈의 원리를 묻는 문제이다. 문자열 슬라이싱을 통해 각자리수의 값을 구한다. 이때, 시작하는 숫자는 1이 아닌 0임에 유의하자. 풀이 자연수(1)과 (2)의 첫번째 자리수의 곱은 자연수(3)이다. 자연수(1)과 (2)의 두번째 자리수의 곱은 자연수(4)이다. 자연수(1)과 (2)의 세번째 자리수의 곱은 자연수(5)이다. 자연수(1)과 (2)의 곱은 자연수(6)이다. 각 자리수는 자연수(2)를 정수에서 문자열 형태로 형변환해주고 문자열 슬라이싱을 하여 구하였다. 이떄 b[0]은 세번째 자리수를 뜻.. 더보기
[백준10430] 나머지.py 10430번: 나머지 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000) www.acmicpc.net 백준 1단계 문제 난이도 브론즈 5 유형 수학, 구현, 사칙연산 접근 파이썬의 수학 연산자를 이용한 문제이다. 풀이 문제에서 주어진대로 사칙연산을 수행하여 출력하면 된다. 이떄, %기호는 나머지 연산자를 뜻하며, 괄호 안에 있는 수식들은 먼저 계산된다. 코드 A, B, C = input("").split() A = int(A) B = int(B) C = int(C) print((A+B)%C) print(((A%C)+(B%C))%C) print((A*B)%C) print((A%C)*(B%C)%C) 더보기
[백준 18108] 1998년생인 내가 태국에서는 2541년생?!.py 18108번: 1998년생인 내가 태국에서는 2541년생?! ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국 www.acmicpc.net 백준 1단계 문제 난이도 브론즈 5 유형 수학, 사칙연산 접근 불기 연도를 서기 연도로 바꿔주는 프로그램을 작성하면 된다. 풀이 불기연도에서 서기연도와의 차이인 543년을 뺴주면 정답이 나온다. 코드 year = int(input()) print(year-543) 더보기
[백준 10926번] ??!.py 10926번: ??! 준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때 www.acmicpc.net 백준 1단계 문제 난이도 브론즈 5 유형 구현 접근 입력받은 아이디에 ??!을 추가해주면 된다. 풀이 아이디를 입력받아 뒤에 문자열 ??!을 추가해주자. 문자열을 대입해서 출력할 때는 포맷 코드를 사용하는데, 다음과 같다. 포맷 코드 자료형 %s 문자열 %c 문자 1개 %d 정수 %f 부동 소수 print("%포맷 코드" % (자료형)) 코드 id = input() print("%s??!" % id) 더보기
[백준 10869] 사칙연산.py 10869번: 사칙연산 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. www.acmicpc.net 백준 1단계 문제 난이도 브론즈 5 유형 수학, 구현, 사칙연산 접근 파이썬의 기본연산자들 중 하나인 수학 연산자를 이용해 풀면 된다. +, -, *, /, % 모두 사용해야하므로 오타에 유의하자. 풀이 두 변수의 입력을 한 줄에 받아야 할 때가 있는데, split함수를 이용하면 된다. 입력을 받는 input함수에 split함수를 사용해주면 A,B 변수를 한번에 입력받게 된다. 단, input함수의 기본 입력 자료형은 문자열이므로 변수들을 정수형으로 변환해주는 것을 잊지 말자. 그 후 수학 연산자를 이용해 계산기 사용하듯이 .. 더보기
[백준 1008] A/B.py 1008번: A/B 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 백준 1단계 문제 난이도 브론즈 4 유형 수학, 구현, 사칙연산 접근 파이썬의 기본연산자들 중 하나인 수학 연산자를 이용해 풀면 된다. 풀이 두 변수의 입력을 한 줄에 받아야 할 때가 있는데, split함수를 이용하면 된다. 입력을 받는 input함수에 split함수를 사용해주면 A,B 변수를 한번에 입력받게 된다. 단, input함수의 기본 입력 자료형은 문자열이므로 변수들을 정수형으로 변환해주는 것을 잊지 말자. 그 후 수학 연산자를 이용해 계산기 사용하듯이 사칙연산을 수행해주면 된다. 코드 A, B = input("").split() A = int(A) B = int(B) p.. 더보기