알고리즘을 배우기 위한 준비
·
Algorithm/이론
알고리즘이란 문제를 해결하는 단계적 절차 또는 방법이다. 알고리즘에는 입력이 주어지고, 알고리즘은 수행한 결과인 해(또는 답)를 출력한다. 알고리즘의 특성 정확성: 알고리즘은 주어진 입력에 대해 올바른 해를 주어야 한다. (안정적 정확성) 수행성: 알고리즘의 각 단계는 컴퓨터에서 수행 가능하여야 한다. (잘 정의된 동작 명령) 유한성: 알고리즘은 일정한 시간 내에 종료되어야 한다. 효율성: 알고리즘은 효율적일수록 그 가치가 높아진다. 최초의 알고리즘 가장 오래된 알고리즘은 기원전 300년경 유클리드(Euclid)의 최대공약수 알고리즘이다. 유클리드 호제법이라고도 부른다. - 유클리드의 최대공약수 알고리즘 2개의 자연수의 최대공약수는 큰 수에서 작은 수를 뺀 수와 작은 수와의 최대공약수와 같다는 성질을 이..
알고리즘 들어가기
·
Algorithm/이론
알고리즘이란 문제를 해결하기 위한 단계적인 절차를 의미한다. 주어진 문제에 여러 종류의 알고리즘이 있을 수 있으나, 보다 효율적인 알고리즘을 고안하는 것이 매우 중요하다. 1. 최대 숫자 찾기 mission: 다음 카드들 중에 가장 큰 숫자를 찾는다. - 순차 탐색 (Sequential Search) 카드를 한 장씩 차례대로 읽어 가며 찾는 방법이다. 2. 임의의 숫자 찾기 mission: 다음 카드들 중에 임의의 숫자(ex. 85)를 찾는다. - 순차 탐색 (Sequential Search) - 이진 탐색 (Binary Search) 오름차순으로 정렬된 데이터를 반으로 나누고, 나누어진 반을 다시 반으로 나누고, 이 과정을 반복하여 원하는 데이터를 찾는 탐색 알고리즘이다. 3. 동전 거스름돈 missi..
[Python] 백준/BOJ 2744번: 대소문자 바꾸기
·
Algorithm/백준 (BOJ)
문제 링크 https://www.acmicpc.net/problem/2744 문제 영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오. 풀이 입력받은 단어를 문자열 함수 swapcase()를 사용해 대문자는 소문자로, 소문자는 대문자로 변환해서 출력한다. swapcase()는 대문자는 소문자로, 소문자는 대문자로 각각 변환해주는 문자열 함수이다. 코드 print(input().swapcase())
[Python] 백준/BOJ 1373번: 2진수 8진수
·
Algorithm/백준 (BOJ)
문제 링크 https://www.acmicpc.net/problem/1373 문제 2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오. 풀이 먼저 숫자를 입력받는다. int() 함수의 default는 10진수이기 때문에 진법을 2로 지정해준다. 문자열 함수 oct()를 사용해 주어진 2진수를 8진수로 변환한다. 8진수는 숫자 앞에 0o가 붙는다. 예제 출력은 0o 없이 숫자만 출력했으므로 슬라이싱해서 숫자만 출력해준다. 코드 print(oct(int(input(), 2))[2:])
[Python] 백준/BOJ 2588번: 곱셈
·
Algorithm/백준 (BOJ)
문제 링크 https://www.acmicpc.net/problem/2588 문제 (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다. (1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오. 풀이 (3) a * (b % 10) 문제의 주어진 식에서 472X5 계산을 한 자리이다. 472는 a이고 5는 385를 10으로 나누었을 때의 나머지이므로 b%10으로 표현한다. 따라서 (3)은 a*(b%10)이 된다. (4) a * ((b // 10) % 10) 문제의 주어진 식에서 472X8 계산을 한 자리이다. 472는 a이다. 8은 먼저, 385를 10으로 나누었을 때 몫은 38이다. 38을 10으로 나..
[Python] 백준/BOJ 10869번: 사칙연산
·
Algorithm/백준 (BOJ)
문제 링크 https://www.acmicpc.net/problem/10869 문제 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 풀이 a와 b를 int형으로 입력받는다. 사칙연산 식을 출력한다. 문제에서 주어진 A/B(몫)의 경우, 나머지 없이 몫만 출력해야 하므로 버림나눗셈을 이용한다. int(a/b)라고 표현해도 무관하다. 코드 a, b = map(int, input().split()) print(a+b) print(a-b) print(a*b) print(a//b) print(a%b)
[Python] 백준/BOJ 2754번: 학점계산
·
Algorithm/백준 (BOJ)
문제 링크 https://www.acmicpc.net/problem/2754 문제 어떤 사람의 C언어 성적이 주어졌을 때, 평점은 몇 점인지 출력하는 프로그램을 작성하시오. A+: 4.3, A0: 4.0, A-: 3.7 B+: 3.3, B0: 3.0, B-: 2.7 C+: 2.3, C0: 2.0, C-: 1.7 D+: 1.3, D0: 1.0, D-: 0.7 F: 0.0 풀이 딕셔너리를 이용해 풀었다. 딕셔너리는 사전처럼 2개의 요소를 하나로 묶어 표현한 자료형이다. 코드 dic = {'A+':'4.3', 'A0':'4.0', 'A-':'3.7', 'B+':'3.3', 'B0':'3.0', 'B-':'2.7', 'C+':'2.3', 'C0':'2.0', 'C-':'1.7', 'D+':'1.3', 'D0':..
[Python] 백준/BOJ 4999번: 아!
·
Algorithm/백준 (BOJ)
문제 링크 https://www.acmicpc.net/problem/4999 문제 재환이는 저스틴 비버 콘서트에서 소리를 너무 많이 질러서 인후염에 걸렸다. 의사는 재환이에게 "aaah"를 말해보라고 시켰다. 안타깝게도 재환이는 의사가 원하는만큼 소리를 길게 낼 수 없는 경우가 있었다. 각각의 의사는 재환이에게 특정한 길이의 "aah"를 말해보라고 요청한다. 어떤 의사는 "aaaaaah"를 요구하기도 하고, "h"만 요구하는 의사도 있다. 모든 의사는 자신이 원하는 길이의 "aah"를 듣지 못하면 진단을 내릴 수 없다. 따라서, 재환이는 집에서 자신이 얼마나 길게 "aah"를 낼 수 있는지 알아냈고, 자기가 소리낼 수 있는 길이의 "aah"를 요구하는 의사를 방문하려고 한다. 재환이가 낼 수 있는 "aa..