문제 설명


두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요. 

제한조건

 

  • arr은 길이 1이상, 15이하인 배열입니다.
  • arr의 원소는 100 이하인 자연수입니다.

 

입출력 예

 

arr result
[2,6,8,14] 168
[1,2,3] 6

 

나의 풀이

 

def solution(arr):
    m=max(arr)
    while True:
        c =0
        for i in arr:
            if m % i == 0:
                c += 1
            else:
                break
        if c == len(arr):
            break
        m += 1
    return m

1. 배열 arr의 가장 큰 값부터 하나씩 증가하며 배열 arr의 값들을 모두 약수로 가지는지 확인합니다.

2. 모두 약수로 가지는 수가 나오면 리턴합니다.

 

다른 사람의 풀이

 

import math

def solution(num):      
    answer = num[0]
    for n in num:
        answer = (n * answer) // math.gcd(n, answer)
    return answer

math모듈의 gcd(최대공약수)을 이용했습니다.

리스트의 첫번째부터 시작해 계속해서 최소공배수를 계산하고 마지막에 나온 값을 리턴합니다.

 


프로그래머스 'N개의 최소공배수' : https://programmers.co.kr/learn/courses/30/lessons/12953

 

코딩테스트 연습 - N개의 최소공배수

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배��

programmers.co.kr

 

문제 설명


JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한조건

 

  • s는 길이 1 이상인 문자열입니다.
  • s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
  • 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )

 

 

입출력 예

 

s return
3people unFollowed me 3people Unfollowed Me
for the last week For The Last Week

 

나의 풀이

 

def solution(s):
    s=list(s.lower())
    if s[0].isalpha() is True:
        s[0]=s[0].upper()
    for i in range(1,len(s)):
        if s[i-1] == ' ' and s[i].isalpha() is True:
            s[i]=s[i].upper()

    return ''.join(s)

s.split()과 s.title()을 이용해 간단한 문제인 줄 알았는데 문자열 s에 공백이 연달아 나올 수 있다는 예외가 있었습니다.

 

1. 문자열 s를 소문자로 바꾸고 리스트로 만듭니다.

2. 문자열 첫번째 자리가 알파벳인 경우 대문자로 바꿉니다.

3. 두번째 문자열 자리부터 앞자리에 공백이 있고 뒷자리가 알파벳이면 단어의 첫 문자인 것을 알 수 있기 때문에 이럴 경우 해당 문자열을 대문자로 바꿉니다.

4. 리스트를 리턴합니다. 


프로그래머스 'JadenCase 문자열 만들기' : programmers.co.kr/learn/courses/30/lessons/12951

 

코딩테스트 연습 - JadenCase 문자열 만들기

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건

programmers.co.kr

 

문제 설명

 

피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.

예를들어

  • F(2) = F(0) + F(1) = 0 + 1 = 1
  • F(3) = F(1) + F(2) = 1 + 1 = 2
  • F(4) = F(2) + F(3) = 1 + 2 = 3
  • F(5) = F(3) + F(4) = 2 + 3 = 5

와 같이 이어집니다.

2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요.

 

제한조건

 

  • n은 1이상, 100000이하인 자연수입니다.

입출력 예

 

n return
3 2
5 5

 

입출력 예 설명


피보나치수는 0번째부터 0, 1, 1, 2, 3, 5, ... 와 같이 이어집니다.

나의 풀이

 

def solution(n):
    a=[0]*(n+1)
    a[1]=1
    for i in range(2,n+1):
        a[i]= (a[i-1] + a[i-2]) % 1234567
    return a[n]

1. for문을 통해 피보나치의 수를 구해 리스트 a에 저장하고 리턴합니다.

 


프로그래머스 '피보나치 수' : https://programmers.co.kr/learn/courses/30/lessons/12945

 

코딩테스트 연습 - 피보나치 수

피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) =

programmers.co.kr

 

문제 설명


길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다.
배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.)

예를 들어 A = [1, 4, 2] , B = [5, 4, 4] 라면

  • A에서 첫번째 숫자인 1, B에서 두번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1x5) = 5)
  • A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 5 + 16(4x4) = 21)
  • A에서 세번째 숫자인 2, B에서 첫번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 21 + 8(2x4) = 29)

즉, 이 경우가 최소가 되므로 29를 return 합니다.

배열 A, B가 주어질 때 최종적으로 누적된 최솟값을 return 하는 solution 함수를 완성해 주세요.

 

제한조건

 

  • 배열 A, B의 크기 : 1,000 이하의 자연수
  • 배열 A, B의 원소의 크기 : 1,000 이하의 자연수

 

 

입출력 예

 

A B answer
[1, 4, 2] [5, 4, 4] 29
[1,2] [3,4] 10

 

입출력 예 설명


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

입출력 예 #2
A에서 첫번째 숫자인 1, B에서 두번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 4) 다음, A에서 두번째 숫자인 2, B에서 첫번째 숫자인 3을 뽑아 곱하여 더합니다. (누적된 값 : 4 + 6 = 10)
이 경우가 최소이므로 10을 return 합니다.

 

나의 풀이

 

def solution(A,B):
    A.sort()
    B.sort(reverse=True)
    c=0
    for i,j in zip(A,B):
        c += i*j
    return c

1. 입출력 예시 설명을 통해 최솟값을 만들기 위해서는 리스트 A의 가장 작은 원소와 리스트 B의 가장 큰 원소부터 곱해야 한다고 생각했습니다.
2. A는 오름차순으로 정렬하고 B는 내림차순으로 정렬합니다.

3. A와 B의 각 원소를 곱해 누적하여 더합니다. 최종적으로 누적된 값 c를 리턴합니다.

 


프로그래머스 '최솟값 만들기' : https://programmers.co.kr/learn/courses/30/lessons/12941

 

코딩테스트 연습 - 최솟값 만들기

길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱

programmers.co.kr

 

문제 설명


문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 1 2 3 4라면 1 4를 리턴하고, -1 -2 -3 -4라면 -4 -1을 리턴하면 됩니다.

제한조건

 

  • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

입출력 예

 

s return
1 2 3 4 1 4
-1 -2 -3 -4 -4 -1
-1 -1 -1 -1

 

나의 풀이

 

def solution(s):
    s=list(map(int,s.split()))
    return str(min(s)) + ' '+ str(max(s))

1. 문자열 s를 공백을 기준으로 분리해서 int형으로 바꾸고 최솟값과 최댓값을 리턴합니다.


프로그래머스 '최댓값과 최솟값' : https://programmers.co.kr/learn/courses/30/lessons/12939

 

코딩테스트 연습 - 최댓값과 최솟값

문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를��

programmers.co.kr

 

문제 설명


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 이하의 자연수 입니다.

입출력 예

 

n result
15 4

 

입출력 예 설명


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

나의 풀이

 

def solution(n):
    c=0
    for i in range(1,n):
        s=i
        for j in range(i+1,n):
            s += j
            if s == n:
                c += 1
                break
            elif s > n:
                break

    return c+1

1. 합이 n인 연속된 자연수들을 찾기 위해 1부터 올라가는 for문을 만들었습니다.
2. 연속된 숫자의 합이 n인 경우 개수를 하나 더했습니다.

3. 개수를 구하고 n 자신을 계산해 +1하고 리턴했습니다.

 

다른 사람의 풀이

 

def solution(n):
    return len([i for i in range(1,n+1,2) if n % i is 0])

1부터 n까지의 수 중 홀수이고 n의 약수인 수를 찾아 개수를 리턴합니다.


프로그래머스 '숫자의 표현' : programmers.co.kr/learn/courses/30/lessons/12924

 

코딩테스트 연습 - 숫자의 표현

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

programmers.co.kr

 

+ Recent posts