백준

Algorithm/백준

백준 10988번(Python) : 팰린드롬인지 확인하기

www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 문자를 반으로 나눠 중간까지만 비교를 하는 방법, 그리고 전체 비교를 하는 방법이 있는데 일단 나는 전체 비교를 하는 것으로 작성을 하였다. 비교 문자열을 만들고 비교 하였는데 간단한 문제라서 크게 고민할 문제는 아니었다. import sys input = sys.stdin.readline test = input().rstrip() test_compare = test[::-1] if test == test_compare: print(1) else: print(0)

Algorithm/백준

백준 2231번(Python) : 분해합

www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 처음에 문제를 읽고 이게 무슨 말이지..? 분해합이 뭔지는 알겠는데 뭐가 뭐의 생성자..? 잠깐 이렇게 멍을 때렸는데.. 코드로 구현하는데는 어렵지 않았다. 가장 작은 생성자를 구하면 되므로 1부터 입력받는 n까지 for문으로 분해합 숫자를 확인하면 되는 문제였다. 그리고 생성자가 없을 경우에는 입력받은 숫자와 비교하여 0을 출력하면 된다. import sys input = sys...

Algorithm/백준

백준 7795번(Python) : 먹을 것인가 먹힐 것인가

www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net 단순하게 반복문을 통해 두 리스트를 비교하면 시간 초과가 생겨서 문제를 풀지 못한다. 따라서 이분 탐색을 활용하여 문제를 풀어야 한다. 이분 탐색을 하기전, 정렬을 한 뒤 이분탐색에 의하여 도출한 인덱스를 이용하여 답을 구하면 된다. 어차피 이분탐색에 의해 도출된 인덱스보다 작은 부분은 문제의 조건을 만족할 것이기에 따로 신경을 쓰지 않아도 된다. import..

Algorithm/백준

백준 2003번(Python) : 수들의 합 2

www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net (풀이) 시간 제한이 0.5초이기 때문에 평소처럼 반복문에서 일일이 비교하면 시간 제한으로 틀릴 수 있다. 투포인터 알고리즘을 이용해서 풀었는데 만약 끝(end)이 n과 같아져서 풀이를 끝내면 end는 그대로 있고 start가 증가 할 경우를 빠뜨릴 수 있기 때문에 start, end, n 이 세가지가 같아질 경우 반복문이 끝내게 만들었다. 또한 반복문 안에서 합이 m보..

Algorithm/백준

백준 2309번(Python) : 일곱 난쟁이

www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 일곱 숫자의 합이 100이 되며 고정적으로 9개의 숫자를 입력 받으니 전체 합에서 두개를 뺀 값이 100이 되면 된다. 당연히 7개의 숫자를 더하는 코드를 짜는 것보다 100이 되게 빼는 2개의 숫자를 구하는 것이 간단하다. import sys input = sys.stdin.readline arr = list() result_arr = list() for i in range(9): arr.append(int(input..

Algorithm/백준

백준 2798번(Python) : 블랙잭

www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 딜러가 외치는 m보다 작은 최대합을 구하는 문제이다. 배열안에서 세 개의 수를 골라 합을 구하면 되므로 for문을 3개사용해서 답을 구했다. 아무래도 for문이 3개 쓰이다 보니 시간복잡도가 커서 틀릴 줄 알았는데.. 맞았다..!? import sys input = sys.stdin.readline n,m = map(int,input().split()) arr = list(map..

skyey94
'백준' 태그의 글 목록 (8 Page)