분류 전체보기(104)
-
BOJ 2609. 최대공약수와 최소공배수 (Python)
BOJ 2609. 최대공약수와 최소공배수 https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 풀이1) 유클리드 호제법 쓴 풀이 gcd (great common divisor) 유클리드 호제법: X를 Y로 나눈 나머지 값을 R이라고 했을 때, X와 Y의 최대공약수는 Y와 R의 최대공약수와 같다. 나머지가 0이 될 때 까지 Y와 R의 나머지 연산을 하면 된다. 문제의 예제로 나와있는 24, 18을 예로 들자면 24 % 18 = 6 18 % 6 = 0 이렇게되면 Y값 자리에 있는 6이 최대공약수가 된다. 이것을 소스코드..
2021.02.10 -
BOJ 1181. 단어 정렬 (Python)
BOJ 1181. 단어 정렬 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 파이썬의 내장함수 sorted()나 sort()를 사용하면 된다. 둘의 차이점은, sorted() : 정렬한것을 리턴한다. sort() : 원본이 정렬 된 것으로 바뀐다. None을 리턴한다. 주목 할 만한 문법은 key와 reverse 파라미터의 사용이겠다. key : 정렬 기준 정해줌 reverse : default는 True이며, True는 오름차..
2021.02.10 -
BOJ 1018. 체스판 다시 칠하기 (Python)
BOJ 1018. 체스판 다시 칠하기 https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 풀이 별다른 알고리즘 생각 할 필요 없이 브루트 포스로 풀면 된다. W로 시작하는 보드, B로 시작하는 보드를 미리 다 만들어 놓고 비교해도 되지만 난 그렇게 풀지는 않았다. for x in range(N - 8 + 1): for y in range(M - 8 + 1): W_start = 0 B_start = 0 보드에서 8*8 체스판을 고르는 부분이다..
2021.02.10 -
BOJ 11050. 이항계수 1 (Python)
BOJ 11050. 이항계수 1 https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 문제 풀이 이항계수 위키백과 조합론에서, 이항 계수(二項係數, 영어: binomial coefficient)는 이항식을 이항 정리로 전개했을 때 각 항의 계수이며, 주어진 크기의 (순서 없는) 조합의 가짓수이다. 고등학교때 배웠던 조합 구하는 공식인 이것으로 구하면 되고, 재귀를 이용해서 풀었다. 소스코드 def factorial(n): if n == 1 or n == 0: return 1 return n*factorial(n-1) N, K..
2021.02.10 -
BOJ 2798. 블랙잭 (Python)
BOJ 2798. 블랙잭 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net Logic 포문을 세번 돌려서 브루트-포스로도 풀 수는 있지만 효율적이지 않으니 패스. 나는 투포인터 로 풀었다. 입력받은 nums리스트를 오름차순으로 정렬한다.(중요한 작업) 0~N-2 까지 for문을 돌린다. left포인터는 i번째 바로 다음, right포인터는 끝을 가리킨다. left < right인 동안 sum이 M보다 크면 righ..
2021.02.10 -
BOJ 1259. 팰린드롬 수 (Python)
BOJ 1259. 팰린드롬 수 https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net Logic 팰린드롬이란 앞 뒤가 같은 것이다. 토마토, 기러기 같은. 앞에서부터 뽑고, 뒤에서부터 뽑은것이 끝까지 일치한다면 이것은 팰린드롬 수 일것이다. 한번이라도 일치하지 않는다면 그것은 팰린드롬 수가 아니다. 0이 나올때까지 While문을 돌며 input한것을 deque에 저장한다. 이때 그냥 list를 사용하지 않고 덱을 쓰는 이유는, 파이썬의 리스트에서 .pop(0)을하면 ..
2021.02.10