문제


ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.


NAME 

TYPE 

NULLABLE 

ANIMAL_ID

VARCHAR(N) 

FALSE 

ANIMAL_TYPE

VARCHAR(N) 

FALSE 

DATETIME

DATETIME

FALSE

INTAKE_CONDITION

VARCHAR(N)

FALSE

NAME

VARCHAR(N)

TRUE 

SEX_UPON_INTAKE

VARCHAR(N)

FALSE


동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.


NAME

DATETIME

Rocky

2016-06-07 09:17:00

Shelly

2015-01-29 15:01:00

Benji

2016-04-19 13:28:00

Jackie

2016-01-03 16:25:00

*Sam

2016-03-13 11:17:00 


풀이


1
2
3
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC
cs

  • 결과 값으로 출력되는 항목은 NAME과 DATETIME 이므로 두 개의 항목만 출력될 수 있도록 한다.
  • ANIMAL_ID 기준으로 역순 출력이므로 ORDER BY [기준] DESC 를 통해 역순으로 정렬한다.






문제


ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.


NAME 

TYPE 

NULLABLE 

ANIMAL_ID

VARCHAR(N) 

FALSE 

ANIMAL_TYPE

VARCHAR(N) 

FALSE 

DATETIME

DATETIME

FALSE

INTAKE_CONDITION

VARCHAR(N)

FALSE

NAME

VARCHAR(N)

TRUE 

SEX_UPON_INTAKE

VARCHAR(N)

FALSE


동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.


ANIMAL_ID

ANIMAL_TYPE 

DATETIME

INTAKE_CONDITION 

NAME

SEX_UPON_INTAKE 

A349996

Cat

2018-01-22 14:32:00

Normal 

Sugar 

Neutered Male

A350276

Cat 

2017-08-13 13:50:00

Normal 

Jewel

Spayed Female 

A350375

Cat 

2017-03-06 15:01:00 

Normal 

Meo

Neutered Male 

A352555

Dog

2014-08-08 04:20:00 

Normal 

Harley

Spayed Female 



풀이


1
2
3
SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
cs

  • 특정 기준으로 정렬을 하기 위해선 ORDER BY 를 사용한다.
  • 오름차순 : ORDER BY [기준] or ORDER BY [기준] ASC
  • 내림차순 : ORDER BY [기준] DESC







출처 : https://programmers.co.kr/learn/courses/30/lessons/59034

'코딩테스트 연습 > SQL' 카테고리의 다른 글

[SELECT] 여러 기준으로 정렬하기  (0) 2020.03.21
[SELECT] 동물의 아이디와 이름  (0) 2020.03.21
[SELECT] 어린 동물 찾기  (0) 2020.03.21
[SELECT] 아픈 동물 찾기  (0) 2020.03.21
[SELECT] 역순 정렬하기  (0) 2020.03.21

문제


sum_digit함수는 자연수를 전달 받아서 숫자의 각 자릿수의 합을 구해서 return합니다. 예를들어 number = 123이면 1 + 2 + 3 = 6을 return하면 됩니다. sum_digit함수를 완성해보세요.


풀이


1
2
3
4
5
6
def sum_digit(number):
    '''number의 각 자릿수를 더해서 return하세요'''
    return sum([int(i) for i in str(number)])
        
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : {}".format(sum_digit(123)));
cs


  • str(number) 을 통하여 받은 숫자를 문자열로 변환 : 각 자리를 세기 위하여
  • for i i str(number)을 통해 가져온 것은 '1', '2', '3' 이라는 문자일  뿐이므로 int 형으로 바꿔주기 위하여 int (i)를 통해 변환해준다.
  • sum 함수를 사용하여 가져온 수를 더한다.

짧게 풀이해보자는 마음으로 했기에 각 방법은 여러가지 풀이가 나올 수 있다.

sum 함수의 사용 대신 for 문안에서 int(i) 로서 각각 더하게 만드는  방법도 있다.


1
2
3
sum = 0
for i in str(number):
    sum = sum+int(i)
cs


이런식으로 하는데 주의할 점은 number 을 문자열로 했으니 다시 int 형으로 바꿔줘야 한다는 것이다.


문제


number_generator함수는 x와 n을 입력 받습니다. 2와 5를 입력 받으면 2부터 시작해서 2씩 증가하는 숫자를 5개 가지는 리스트를 만들어서 리턴합니다. [2,4,6,8,10]

4와 3을 입력 받으면 4부터 시작해서 4씩 증가하는 숫자를 3개 가지는 리스트를 만들어서 리턴합니다. [4,8,12]

이를 일반화 하면 x부터 시작해서 x씩 증가하는 숫자를 n개 가지는 리스트를 리턴하도록 함수 number_generator를 완성하면 됩니다.


풀이


1
2
3
4
5
6
7
def number_generator(x, n):
    # 함수를 완성하세요
    answer = list(range(x, (x*n)+1, x))
    return answer
 
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(number_generator(3,5))
cs


  • 입력받은 수만큼의 증가하는 코드를 만든다.
  • list 함수는 받은 값을 리스트로 만들어 리턴하여 준다.
  • range(시작 값, 끝 값, 증가 값) 즉, range(x, (x*n)+1, x) 는 x 부터 시작하여 (x*n)+1 까지 x 만큼 증가하는 숫자들을 갖게 해준다.
  • (x*n)+1 에서 +1 이 붙는 이유 = if 문에서 range 를 0부터 시작하듯이 여기서도 0부터 시작하여 출력하기  때문에 그저 x*n 만 하면 0부터 (x*n)-1 값까지만 출력되기에 +1 을 해줘야 한다.
  • return 으로 바로 해줘도 되지만 값으로 받아서 해도 가능하다.


'코딩테스트 연습 > Python' 카테고리의 다른 글

[level1] 완주하지 못한 선수  (0) 2020.04.17
[leve1] 자릿수 더하기  (0) 2017.12.01
[leve1] 딕셔너리 정렬  (0) 2017.11.30

+ Recent posts