Stay Hungry Stay Foolish

전체 글 430

Programmers 나누어 떨어지는 숫자 배열 (Python/Level 1)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. 입출력 예 arr divisor return [5, 9, 7, 10] 5 [..

BOJ 2805번 : 나무 자르기 (C/Silver 2)

2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 상근이는 나무 M미터가 필요하다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다. 예를 들어, 한 줄에 연속해있는 나무의 높이가 20, 15, 10, 17이라고 하자. ..

2장 데이터 다루기

머신러닝 알고리즘은 크게 지도 학습(supervisid learning)과 비지도 학습(unsupervised learning)으로 나뉜다. 지도 학습 알고리즘이란? - 정답(타깃)이 있으니 알고리즘이 정답을 맞히는 것을 학습한다. - 훈련하기 위한 데이터와 정답이 필요하다. 비지도 학습 알고리즘이란? (6장에서 다룸) - 타깃 없이 입력 데이터만 사용한다. - 따라서 무언가를 맞힐 순 없지만 데이터를 잘 파악하거나 변형하는 데 도움을 준다. 지도 학습에서는 데이터를 입력(input), 정답을 타깃(target)이라고 하고, 이 둘을 합쳐 훈련 데이터(training data)라고 부른다. 머신러닝 알고리즘의 성능을 제대로 평가하려면 훈련 데이터와 평가에 사용할 데이터가 각각 달라야 한다. 가장 간단한 ..

혼공/머신러닝 2022.07.22

BOJ 2750번 : 수 정렬하기 (C++/Bronze 2)

2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 5 5 2 3 4 1 예제 출력 1 2 3 4 5 문제 풀이 알고리즘 라이브러리에서 지원하는 sort()를 ..

BOJ 2751번 : 수 정렬하기 2 (C++/Silver 5)

2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 5 5 4 3 2 1 예제 출력 1 2 3 4 5 문제 풀이 알고리즘 라..

1장 머신러닝이란?

머신러닝(Machine Learning)이란? - 규칙을 일일이 프로그래밍 하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야 - 지능을 구현하기 위한 소프트웨어를 담당하는 핵심 분야 - 보통의 프로그램과 달리 누구도 알려주지 않는 기준을 찾아서 일을 함 대표적인 머신러닝 라이브러리 - 사이킷런(scikit-learn) : 파이썬 API를 사용 Google Colab - 머신러닝을 학습하기 위한 서비스 구글 코랩으로 머신러닝 실습해보기 '생선 분류 문제' - 도미와 빙어를 분류하기(이진 분류 : 2개의 클래스 중 하나를 고르는 문제) 1. 도미와 빙어 데이터 준비 위는 도미와 빙어의 길이 및 무게 데이터를 나타낸 것이다. Bream은 도미를 의미하고, Smelt는 빙어를 의미한다. ..

혼공/머신러닝 2022.07.08

BOJ 2480번 : 주사위 세개 (C언어/Bronze 4)

문제 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다. 예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으로 받게..

Programmers 두 개 뽑아서 더하기 (Python/Level 1)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 입출력 예 numbers result [2, 1, 3, 4, 1] [2 ,3, 4, 5, 6, 7] [5, 0, 2, 7] [2, 5, 7, 9, 12] 문제 설명 입출..

BOJ 10871번 : X보다 작은 수 (C언어/Bronze 5)

문제 정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. 출력 X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다. 예제 입력 10 5 1 10 4 9 2 3 8 5 7 6 예제 출력 1 4 2 3 문제 풀이 수열 A를 입력 받자마자 X와 대소비교를 하고 바로 출력한다. Solution #include int main() { int N, X; scanf("%d %d",&N, &X)..

BOJ 1110번 : 더하기 사이클 (C언어/Bronze 1)

문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 ..

Programmers 상위 n개 레코드 (SELECT/Level 1)

문제 설명 보호소에 가장 먼저 들어온 동물의 이름을 조회한다. 문제 풀이 SELECT문에 동물의 이름(NAME)을 적는다. FROM절에 보호소 테이블인 ANIMAL_INS를 적는다. 가장 먼저 들어온 동물을 조회하는 조건이 있으므로, 보호시작일(DATETIME)이 가장 오래된 것을 찾으면 된다. 이때, DATETIME이 최소인 것을 검색하면 되는데 WHERE절에서는 집계함수를 사용할 수 없다. 따라서 서브 쿼리를 이용한다. 서브 쿼리는 하나의 쿼리문에 포함되어 있는 또 다른 쿼리문이다. 사용하는 방법은 WHERE절에서 칼럼명 뒤에 IN을 적어주고 괄호 안에 다른 쿼리문을 적는다. IN은 괄호 내에서 일치하는 것이 있으면 TRUE로 평가된다. Solution SELECT NAME FROM ANIMAL_IN..

Programmers 여러 기준으로 정렬하기 (SELECT/Level 1)

문제 설명 보호소의 모든 동물의 아이디, 이름, 보호 시작일을 이름 순으로 조회한다. 단, 이름이 같은 동물은 보호 시작을 더 늦게 한 동물을 먼저 보여줘야 한다. 문제 풀이 SELECT절에 동물 아이디(ANIMAL_ID), 동물 이름(NAME), 보호 시작일(DATETIME)을 적는다. FROM절에 보호소 테이블인 ANIMAL_INS를 적는다. 이름 순으로 조회해야 하므로, ORDER BY를 이용해 정렬한다. 이때, 이름(NAME)뒤에 오름차순 키워드인 'ASC'은 디폴드 값이므로 생략한다. 같은 이름의 동물일 경우 보호 시작이 더 늦는 동물을 먼저 보여줘야 하기 때문에 DATETIME은 'DESC'로 검색한다. Solution SELECT ANIMAL_ID, NAME, DATETIME FROM ANI..

프로그래머스 동물의 아이디와 이름 (SELECT/Level 1)

문제 설명 보호소의 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회한다. 문제 풀이 SELECT절에 동물의 아이디와(ANIMAL_ID)와 이름(NAME)을 적는다. FROM절에 보호소 테이블인 ANIMAL_INS를 적는다. ANIMAL_ID(동물 아이디)순으로 조회해야 하므로, ORDER BY절을 이용한다. 이때, 칼럼명 뒤에 ASC키워드는 디폴드 값이므로 생략한다. Solution SELECT ANIMAL_ID, NAME FROM ANIMAL_INS ORDER BY ANIMAL_ID; ※ORDER BY절을 적지 않고 코드 실행을 해도, 결과가 오름차순으로 정렬이 되어 있다. 그래서 안 적어도 문제는 없지만 되도록이면 적어주는 게 좋다.

프로그래머스 어린 동물 찾기 (SELECT/Level 1)

문제 설명 보호소의 동물 중 젊은 동물의 아이디와 이름을 조회한다. 이때, 결과는 아이디 순으로 보여준다. 문제 풀이 SELECT절에 동물의 아이디(ANIMAL_ID)와 동물의 이름(NAME)을 적는다. FROM 절에 보호소 테이블인 ANIMAL_INS를 적는다. 젊은 동물을 조회하라는 조건이 있으므로, 동물의 상태를 나타내는 INTAKE_CONDITION에서 'Aged'가 아닌 경우만 뽑도록 한다. 따라서, WHERE절에 칼럼명 뒤에 '같지 않다'의 의미를 지닌 ''키워드를 사용하고 그 뒤에 'Aged'문자열을 적어준다. 아이디 순으로 정렬해야 하므로, ORDER BY절을 이용한다. 이때, 칼럼명 뒤에 써야 하는 오름차순 키워드 'ASC'는 디폴트 값이므로 생략한다. Solution SELECT ANI..