Stay Hungry Stay Foolish

분류 전체보기 423

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

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

문제 설명 보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회한다. 이때 결과는 아이디 순으로 보여준다. 문제 풀이 SELECT절에 동물의 아이디를 나타내는 ANIMAL_ID와, 이름을 나타내는 NAME을 쓴다. FROM절에 보호소 테이블 ANIMAL_INS을 쓴다. 아픈 동물을 조회하라는 조건이 있으므로, WHERE절에 동물의 상태를 나타내는 INTAKE_CONDITION에서 'SICK'만 찾을 수 있도록 한다. 이때, 'SICK'이라는 문자열만 찾으려면 칼럼명 뒤에 '='를 써주고 해당 문자열을 적는다. 아이디 순으로 조회해야 하므로, ORDER BY를 이용해 정렬한다. 이때, 칼럼명 뒤에 ASC키워드는 디폴드 값이므로 생략한다. Solution SELECT ANIMAL_ID, NAME FRO..

프로그래머스 역순 정렬하기 (SELECT/Level 1)

문제 설명 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회한다. 이때 결과는 ANIMAL_ID 역순으로 보여준다. 문제 풀이 SELECT절에 동물의 이름을 나타내는 ANIMAL_ID와, 보호 시작일을 나타내는 DATETIME을 쓴다. FROM절에 동물의 정보를 담은 테이블인 ANIMAL_INS를 쓴다. ANIMAL_ID(동물 이름)순으로 정렬해야 하므로, 정렬 키워드인 ORDER BY를 이용한다. 이때, 역순으로 보여줘야 하니 칼럼명 뒤에 내림차순을 나타내는 'DESC'를 쓴다. Solution SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC;

프로그래머스 모든 레코드 조회하기(SELECT/Level 1)

문제 설명 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회한다. 문제풀이 조회하라는 문제이니 SELECT문을 쓴다. 모든 정보를 검색할 때는 SELECT절에 '*'를 쓴다. FROM 절에는 동물들의 정보가 담긴 테이블인 ANIMAL_INS를 쓴다. ANIMAL_ID순으로 조회해야 하므로 ORDER BY를 이용한다. 이때 칼럼명 뒤에 오름차순을 나타내는 ASC를 써야 하는데, 디폴트 값이므로 생략해도 된다. Solution SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID;

BOJ 2884번 : 알람 시계 (C언어/Bronze 3)

문제 "45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 그리고 이것은 현재 상근이가 설정한 놓은 알람 시간 H시 M분을 의미한다. 입력 시간은 24시간 표현을 사용한다. 24시간 표현에서 하루의 시작은 0:0(자정)이고, 끝은 23:59(다음날 자정 1분 전)이다. 시간을 나타낼 때, 불필요한 0은 사용하지 않는다. 출력 첫째 줄에 상근이가 창영이의 방법을 사용할 때, 설정해야 하는 알람 시간을 출력한다. (입..

BOJ 7567번 : 그릇 (C언어/Bronze 2)

문제 그릇을 바닥에 놓았을 때 그 높이는 10cm 이다. 그런데 두 개의 그릇을 같은 방향으로 포개면 그 높이는 5cm만 증가된다. 만일 그릇이 서로 반대방향으로 쌓이면 높이는 그릇만큼, 즉 10cm 늘어난다. 그릇을 괄호 기호로 나타내어 설명해보자. 편의상 그릇이 쌓이는 방향은 왼쪽에서 오른쪽이라고 가정한다. 그림에서 ‘(’은 그릇이 바닥에 바로 놓인 상태를 나타내며, ‘)’은 그릇이 거꾸로 놓인 상태를 나타낸다. 만일 그릇이 포개진 모양이 ((((와 같다면 전체의 높이는 25cm가 된다. 왜냐하면 처음 바닥에 있는 그릇의 높이가 10cm이고 이후 같은 방향으로 3개의 그릇이 포개져 있으므로 늘어난 높이는 5+5+5=15 이기 때문이다. ()()와 같은 경우라면 그 높이는 10*4=40cm가 된다. 여..

프로그래머스 하샤드 수 (파이썬/level 1)

문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 - x는 1 이상, 10000 이하인 정수입니다. 입출력 예 #1 - 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다. 예 #2 - 12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다. 예 #3 - 11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다. 예 #4 - 13의 모든 ..

BOJ 5543번 : 상근날드 (C언어/Bronze 4)

문제 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된다. 햄버거는 총 3종류 상덕버거, 중덕버거, 하덕버거가 있고, 음료는 콜라와 사이다 두 종류가 있다. 햄버거와 음료의 가격이 주어졌을 때, 가장 싼 세트 메뉴의 가격을 출력하는 프로그램을 작성하시오. 입력 입력은 총 다섯 줄이다. 첫째 줄에는 상덕버거, 둘째 줄에는 중덕버거, 셋째 줄에는 하덕버거의 가격이 주어진다. 넷째 줄에는 콜라의 가격, 다섯째 줄에는 사이다의 가격이 주어진다. 모든 가격은 100원 이상, 2000원 이하이다. 출력 첫째 줄에 가장 싼 세트 메뉴의 가격을 출력한다. 예제 입력 800 700 900 198 330 예제 출력 848 문제 설명 햄버거..