728x90
반응형

출처 : 프로그래머스

문제 설명

무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다.

예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다.

구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다.

사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요.

제한사항
  • 무인도에 갇힌 사람은 1명 이상 50,000명 이하입니다.
  • 각 사람의 몸무게는 40kg 이상 240kg 이하입니다.
  • 구명보트의 무게 제한은 40kg 이상 240kg 이하입니다.
  • 구명보트의 무게 제한은 항상 사람들의 몸무게 중 최댓값보다 크게 주어지므로 사람들을 구출할 수 없는 경우는 없습니다.
입출력 예peoplelimitreturn
[70, 50, 80, 50] 100 3
[70, 80, 50] 100 3
def solution(people, limit):
    answer = 0
    people.sort()
    left = 0
    right = len(people)-1
    while left <= right:
        answer += 1
        if people[left]+ people[right] <= limit:
            left += 1
        right -= 1

    return answer

people= [70, 50, 80]
limit = 100
solution(people, limit)
반응형

'문제 > 프로그래머스' 카테고리의 다른 글

[3차] 압축  (0) 2021.12.23
[3차] 파일명 정렬  (0) 2021.12.17
루시와 엘라 찾기  (0) 2021.12.09
고양이와 개는 몇 마리 있을까  (0) 2021.12.09
올바른 괄호  (0) 2021.12.09
728x90
반응형

출처 : 프로그래머스

 

코딩테스트 연습 - 루시와 엘라 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

문제 설명

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

NAMETYPENULLABLE
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

동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요.

예시

이때 결과는 아이디 순으로 조회해주세요. 예를 들어 ANIMAL_INS 테이블이 다음과 같다면

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A373219 Cat 2014-07-29 11:43:00 Normal Ella Spayed Female
A377750 Dog 2017-10-25 17:17:00 Normal Lucy Spayed Female
A353259 Dog 2016-05-08 12:57:00 Injured Bj Neutered Male
A354540 Cat 2014-12-11 11:48:00 Normal Tux Neutered Male
A354597 Cat 2014-05-02 12:16:00 Normal Ariel Spayed Female

SQL문을 실행하면 다음과 같이 나와야 합니다.

ANIMAL_IDNAMESEX_UPON_INTAKE
A373219 Ella Spayed Female
A377750 Lucy Spayed Female

본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.

-- 코드를 입력하세요
SELECT ANIMAL_ID,
    NAME,
    SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Ella','Lucy','Pickle','Rogan','Sabrina','Mitty')
ORDER BY ANIMAL_ID
반응형

'문제 > 프로그래머스' 카테고리의 다른 글

[3차] 파일명 정렬  (0) 2021.12.17
구명보트  (0) 2021.12.17
고양이와 개는 몇 마리 있을까  (0) 2021.12.09
올바른 괄호  (0) 2021.12.09
3차] n진수 게임  (0) 2021.12.08
728x90
반응형

출차 : 프로그래머스

문제 설명

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

NAMETYPENULLABLE
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_INS 테이블이 다음과 같다면

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A373219 Cat 2014-07-29 11:43:00 Normal Ella Spayed Female
A377750 Dog 2017-10-25 17:17:00 Normal Lucy Spayed Female
A354540 Cat 2014-12-11 11:48:00 Normal Tux Neutered Male

고양이는 2마리, 개는 1마리 들어왔습니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

ANIMAL_TYPEcount
Cat 2
Dog 1

본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.

-- 코드를 입력하세요
SELECT ANIMAL_TYPE AS ANIMAL_TYPE,
       COUNT(*)  AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE
반응형

'문제 > 프로그래머스' 카테고리의 다른 글

구명보트  (0) 2021.12.17
루시와 엘라 찾기  (0) 2021.12.09
올바른 괄호  (0) 2021.12.09
3차] n진수 게임  (0) 2021.12.08
다음 큰 숫자  (0) 2021.12.08
728x90
반응형

출처 : 프로그래머스

 

코딩테스트 연습 - 올바른 괄호

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은

programmers.co.kr

문제 설명

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

  • "()()" 또는 "(())()" 는 올바른 괄호입니다.
  • ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항
  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

입출력 예sanswer
"()()" true
"(())()" true
")()(" false
"(()(" false
입출력 예 설명

입출력 예 #1,2,3,4
문제의 예시와 같습니다.

  1. (→ 1로 )→-1 로 바꿨음
  2. for 문을 돌리면서 sum_=0 이고 val 이 -1일 경우는 ⇒ 예: )로 시작
  3. 그리고 sum =0일 때 idx가 홀수 이여야 한다. 0부터 시작하기 때문에
def solution(s):
    list_ = [1 if i =='(' else -1 for i in s ]
    sum_= 0
    for idx,val in enumerate(list_):
        if sum_ ==0 and val == -1:
            return False
        sum_+= val
        if sum_==0 and idx%2 ==0:
            return False
    if sum_ != 0:
        return False
    return True

s = "())("
solution(s)
반응형

'문제 > 프로그래머스' 카테고리의 다른 글

루시와 엘라 찾기  (0) 2021.12.09
고양이와 개는 몇 마리 있을까  (0) 2021.12.09
3차] n진수 게임  (0) 2021.12.08
다음 큰 숫자  (0) 2021.12.08
땅따먹기  (0) 2021.12.04
728x90
반응형

출처 : 프로그래머스

 

코딩테스트 연습 - [3차] n진수 게임

N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0

programmers.co.kr

  • [3차] n진수 게임
문제 설명

N진수 게임

튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다.

  1. 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다.
  2. 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다.

이렇게 게임을 진행할 경우,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, …
순으로 숫자를 말하면 된다.

한편 코딩 동아리 일원들은 컴퓨터를 다루는 사람답게 이진수로 이 게임을 진행하기도 하는데, 이 경우에는
0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, …
순으로 숫자를 말하면 된다.

이진수로 진행하는 게임에 익숙해져 질려가던 사람들은 좀 더 난이도를 높이기 위해 이진법에서 십육진법까지 모든 진법으로 게임을 진행해보기로 했다. 숫자 게임이 익숙하지 않은 튜브는 게임에 져서 벌칙을 받는 굴욕을 피하기 위해, 자신이 말해야 하는 숫자를 스마트폰에 미리 출력해주는 프로그램을 만들려고 한다. 튜브의 프로그램을 구현하라.

입력 형식

진법 n, 미리 구할 숫자의 갯수 t, 게임에 참가하는 인원 m, 튜브의 순서 p 가 주어진다.

  • 2 ≦ n ≦ 16
  • 0 < t ≦ 1000
  • 2 ≦ m ≦ 100
  • 1 ≦ p  m

출력 형식

튜브가 말해야 하는 숫자 t개를 공백 없이 차례대로 나타낸 문자열. 단, 10~15는 각각 대문자 A~F로 출력한다.

입출력 예제

ntmpresult
2 4 2 1 "0111"
16 16 2 1 "02468ACE11111111"
16 16 2 2 "13579BDF01234567"

 

 

 

10진수에서 n진수로 구하는 방법 :

아래 링크 참조하였다. 

https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A7%84%EC%88%98%EB%B3%80%ED%99%982%EC%A7%84%EB%B2%95-3%EC%A7%84%EB%B2%95-5%EC%A7%84%EB%B2%95-10%EC%A7%84%EB%B2%95n%EC%A7%84%EB%B2%95

 

파이썬 진수변환(2진법, 3진법, 5진법, 10진법)[n진법]

python에서는 기본적으로 int() 라는 함수를 지원한다int(string, base)2051104185276710진수로 변경이 가능하다.2, 8, 16진수는 bin(), oct(), hex() 함수를 지원한다.0b10110o130xb0b는 2진수, 0o는 8진수,

velog.io

https://velog.io/@djagmlrhks3/Algorithm-Programmers-3%EC%B0%A8-n%EC%A7%84%EC%88%98-%EA%B2%8C%EC%9E%84-by-Python

 

[Algorithm] Programmers : [3차] n진수 게임 by Python

문제 바로가기 https://programmers.co.kr/learn/courses/30/lessons/17687N진수 게임튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩

velog.io

문제의 해석에서 망설이고 있었다 .

그래서 다른 사람의 답을 보고 확인하였다

  1. 10진수에서 n진수로
  2. 진수로 바 꿀 경우 한가지 생각한 점이 있다. 10→ A로 바꾸고 등 이런것 때문이다.
  3. 미리 구할 숫자의 갯수 만큼 for 문을 돌리고 그 값은 p-1에서 i*m을 곱한 값을 slicing한다.
#진수 구하기 
def number_(num, n):
    temp = "0123456789ABCDEF"
    div_, mod = divmod(num, n)
    if div_ ==0:
        return temp[mod]
    else:
        return number_(div_, n)+temp[mod]

def solution(n, t, m, p):
    answer = ''
    s=''
    for i in range(t*m):
        s+= number_(i, n)
    id_ = p -1
    for i in range(t):
        answer+= s[id_+(i*m)]
    return answer

n = 2 # 진법 
t = 4 # 미리 구할 숫자의 갯수
m = 2 # 게임에 참가하는 인원
p= 1 # 튜브의 순서
solution(n, t, m, p)
반응형

'문제 > 프로그래머스' 카테고리의 다른 글

고양이와 개는 몇 마리 있을까  (0) 2021.12.09
올바른 괄호  (0) 2021.12.09
다음 큰 숫자  (0) 2021.12.08
땅따먹기  (0) 2021.12.04
숫자의 표  (0) 2021.12.04
728x90
반응형

출처 : 프로그래머스

 

코딩테스트 연습 - 다음 큰 숫자

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니

programmers.co.kr

  • 다음 큰 숫자
문제 설명

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.

  • 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.
  • 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.
  • 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.

예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.

자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.

제한 사항
  • n은 1,000,000 이하의 자연수 입니다.

입출력 예nresult
78 83
15 23
입출력 예 설명

입출력 예#1
문제 예시와 같습니다.
입출력 예#2
15(1111)의 다음 큰 숫자는 23(10111)입니다.

def solution(n):
    answer = 0
    s = str(bin(n))
    i = 1
    while True:
        s_ = str(bin(n+i))
        if s.count('1') == s_.count('1'):
            answer = n+i
            break
        i += 1
    return answer

n = 78
solution(n)
반응형

'문제 > 프로그래머스' 카테고리의 다른 글

올바른 괄호  (0) 2021.12.09
3차] n진수 게임  (0) 2021.12.08
땅따먹기  (0) 2021.12.04
숫자의 표  (0) 2021.12.04
최댓값과 최솟값  (0) 2021.12.04
728x90
반응형

출처 : 프로그래머스

문제 설명

땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다.

예를 들면,

| 1 | 2 | 3 | 5 |

| 5 | 6 | 7 | 8 |

| 4 | 3 | 2 | 1 |

로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다.

마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를 완성해 주세요. 위 예의 경우, 1행의 네번째 칸 (5), 2행의 세번째 칸 (7), 3행의 첫번째 칸 (4) 땅을 밟아 16점이 최고점이 되므로 16을 return 하면 됩니다.

제한사항
  • 행의 개수 N : 100,000 이하의 자연수
  • 열의 개수는 4개이고, 땅(land)은 2차원 배열로 주어집니다.
  • 점수 : 100 이하의 자연수
입출력 예landanswer
[[1,2,3,5],[5,6,7,8],[4,3,2,1]] 16
입출력 예 설명

입출력 예 #1
문제의 예시와 같습니다.

dp문제였다 .

시간 초과가 너무 계속 나온다. 

하지만 풀이를 참조하여 수정하였다. 

def max_val(i_id,land_,j ):
    _list = [i for i in range(4)]
    _list.remove(j)
    return max([land_[i] for i in _list])

def solution(land):
    answer = 0
    for i_idx in range(1, len(land)):
        j = 0
        while j < 4:
            land[i_idx][j] += max_val(i_idx-1, land[i_idx-1],j)
            j += 1

    answer= max(land[-1])
    return answer


land = [[1,2,3,5],[5,6,7,8],[4,3,2,1]]
solution(land)
반응형

'문제 > 프로그래머스' 카테고리의 다른 글

3차] n진수 게임  (0) 2021.12.08
다음 큰 숫자  (0) 2021.12.08
숫자의 표  (0) 2021.12.04
최댓값과 최솟값  (0) 2021.12.04
최솟값 만들기  (0) 2021.11.27
728x90
반응형

출처 : 프로그래머스

문제 설명

Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.

  • 1 + 2 + 3 + 4 + 5 = 15
  • 4 + 5 + 6 = 15
  • 7 + 8 = 15
  • 15 = 15

자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.

제한사항
  • n은 10,000 이하의 자연수 입니다.

입출력 예nresult
15 4
입출력 예 설명

입출력 예#1
문제의 예시와 같습니다.

def solution(n):
    answer = [n]
    i = 1
    m = (n //2 +1)
    for i in range(1, m):
        sum = i
        for j in range(i+1, m+1):
            sum  += j
            if sum > n:
                break
            elif sum == n:
                answer.append(sum)
                
    return len(answer)
반응형

'문제 > 프로그래머스' 카테고리의 다른 글

다음 큰 숫자  (0) 2021.12.08
땅따먹기  (0) 2021.12.04
최댓값과 최솟값  (0) 2021.12.04
최솟값 만들기  (0) 2021.11.27
행렬의 곱셈  (0) 2021.11.27

+ Recent posts