목록2019/10 (17)
Eat the ENAK
문제 바로가기 https://boj.kr/1001 Solved.ac* 난이도 * Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요. 본문 해설 https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/1001 이전 문제인 BOJ1000 - A+B에서 +만 -로 바꿔주면 되겠다. Python 풀이 a,_,b=input() print(int(a)-int(b)) C++풀이 #include using namespace std; int main(){ int a, b; cin >> a >> b; cout
문제 바로가기 http://boj.kr/1000 Solved.ac* 난이도 * Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요. 본문 해설 https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/1000/ return0927/CodingWrite-UP Write-Ups for various programming(esp. coding) challenges. - return0927/CodingWrite-UP github.com 아주 간단한 입출력 문제이다. 띄어쓰기로 구분된 두 정수를 받아 두 정수의 합을 출력한다. Python 풀이 print(sum([int(x) for x in in..
문제 바로가기 https://www.acmicpc.net/problem/7568 Solved.ac* 난이도 * Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요. 본문 해설 https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/7568/7568.py 이 문제도 분류가 브루트포스이다. 전수조사를 통해 풀 수 있음을 명심하고 풀이에 들어간다. \(N\)명의 키와 몸무게가 주어지는데, \(N < 50\)이어서 아무리 커도 배열크기가 \(50 x 50\)을 넘지 않는다. 따라서 \(N x N\)짜리 2차원 배열을 생성하는 직관적 풀이를 해보자. 먼저 \(N\)명의 키와 몸무게를 받아오자. ..
문제 바로가기 https://www.acmicpc.net/problem/1436 Solved.ac* 난이도 * Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요. 본문 해설 https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/1436/1436.py 간단한 전수조사 문제이다. 시간도 2초니까 일단 짜보고 최악의 경우인 \(N=10000\)일 때 걸리는 시간을 이용해 조절하면 되겠다. C/C++에서는 10으로 나눠가면서 1000으로 나눈 나머지가 666인지를 체크해야하는데, 파이썬에서는 str in str 메소드를 지원한다. 따라서 늘려가는 숫자를 str로 cast해 검사하자. n =..
문제 바로가기 https://www.acmicpc.net/problem/2750 Solved.ac* 난이도 * Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요. 본문 해설 https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/2750/2750.py 선대 프로그래머들은 무작위로 주어진 수를 정렬하는 방법에 대해 많은 연구를 했는데, 그 결과가 현재 '정렬 알고리즘'이라는 분류 하에 정리되어 있다. 시간복잡도가 \(O(n^2)\)인 저효율 정렬방식부터 \(O(n \log{n})\)인 고효율 정렬방식까지 굉장히 많다만은, 이 문제에서는 숫자가 1000개 이하이기 때문에 \(O(n^2)\..
문제 바로가기 https://www.acmicpc.net/problem/2231 Solved.ac* 난이도 * Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요. 본문 해설 https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/2231/2231.py 이 문제에서 "생성자"라는 개념이 나오는데, 어떤 주어진 자연수 \(M\)에 대해, \(M\) 그 자체와 \(M\)의 각 자리수의 합을 더한 것이 자연수 \(N\)일 때, \(M\)은 \(N\)의 생성자라고 한다. 문제의 설명에서는 방금 설명한 \(M\), \(N\)을 바꾸어 설명하는데, 입력값과 동일시하기 위해 바꿔서 말했다. 입력 첫..
문제 바로가기 https://www.acmicpc.net/problem/2798 Solved.ac* 난이도 * Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은홈페이지를 참고해주세요. 본문 해설 https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/2798/2798.py 이 문제의 분류는 "브루트포스"이다. 모든 경우의 수를 직접 찾아보라는 의미인데, 1초/128MB라 빡빡할거라 생각했지만 그대로 전수조사만 해주면 풀리는 문제이다. Python에서 조합을 구해주는 메소드가 있는데, 내장모듈인 itertools.combinations이다. combinations(cards, 3)으로 원소가 3개짜리 조합을 ..
문제 바로가기 https://www.acmicpc.net/problem/1978 Solved.ac* 난이도 * Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요. 본문 해설 https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/1978/1978.py 주어지는 \(N\)개의 숫자는 1000이하의 자연수이므로 그냥 1000까지의 소수를 set으로 미리 구해둔 후, 입력값도 set으로 바꾸어 교집합의 원소의 개수를 간단히 구해주자. input() # Num count는 필요없다! 이건 파이썬이라구 nums = {int(x) for x in input().split(' ')} # 숫자들 받..
문제 바로가기 https://www.acmicpc.net/problem/2581 Solved.ac* 난이도 * Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요. 본문 해설 https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/2581/2581.py 소수 판별법(\(O(\sqrt{n})\))에 대한 내용은 이전 글에 자세히 설명해두었다. 2019/10/29 - [PS: Problem Solving/BOJ: 백준온라인저지] - BOJ1929 - 소수 구하기 이후 한 줄로 주어진 폐구간 \([m, n]\)를 받고 그 사이의 소수들을 모두 구해준다. # 1
문제 바로가기 https://www.acmicpc.net/problem/1929 Solved.ac* 난이도 * Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요. 본문 해설 https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/1929/1929.py 소수 구하는 알고리즘만 간단히 설명하자면 def check_prime(n: int) -> bool: if n == 1: return False for i in range(2, int(n**.5 + .5) + 1): if n % i == 0: return False return True 이다. 주어진 수가 1인 경우에는 소수가 아니라고 판..