전체 글

Algorithm/프로그래머스

프로그래머스 : 3진법 뒤집기(Python)

programmers.co.kr/learn/courses/30/lessons/68935 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 3진법으로 변환을 할 때는 divmod 내장 함수를 반복하여 사용하여 구하였고 뒤집는 것은 별다른 조치를 하지 않아도 3진법의 끝 부분부터 저장되므로 신경쓰지 않아도 된다. divmod : 몫과 나머지를 반환한다. (튜플형식으로 반환) int(x,3) : 3진법으로 구성된 x를 10진법으로 바꿔주는 역할을 한다. def solut..

Algorithm/프로그래머스

프로그래머스 : 나누어 떨어지는 숫자 배열(Python)

programmers.co.kr/learn/courses/30/lessons/12910 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr 백준과 프로그래머스를 번갈아 가면서 풀고 있는데 얼른 공부에 박차를 가해서 좀 더 실력을 높이고 싶다.. 프로그래머스 레벨1문제라 어려운 문제는 아니지만, 문제를 풀었고 그것에 대한 기록으로 프로그래머스의 레벨1,2,3 모두 여기에 담고 싶다. 이 문제는 문제에서 주어진 그대로 for문을 돌면서 나누어지는지 ..

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..

skyey94
Retrospect