728x90
반응형

출처: 프로그래머스 코딩 테스트 연습 문제

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.제한사항

  • arr은 자연수를 담은 배열입니다.
  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
  • divisor는 자연수입니다.
  • array는 길이 1 이상인 배열입니다.

입출력 예 설명

입출력 예#1
arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라서 [5, 10]을 리턴합니다.

입출력 예#2
arr의 모든 원소는 1으로 나누어 떨어집니다. 원소를 오름차순으로 정렬해 [1, 2, 3, 36]을 리턴합니다.

입출력 예#3
3, 2, 6은 10으로 나누어 떨어지지 않습니다. 나누어 떨어지는 원소가 없으므로 [-1]을 리턴합니다.

 

%%time

def solution(arr, divisor):
    answer = list(filter(lambda x: x % divisor == 0,arr))
    return sorted([-1] if len(answer)==0 else answer)

arr =[3,2,6]
divisor = 10
print(solution(arr, divisor))

 

다른 사람 풀이 보고 수정 후 :

def solution(arr, divisor):
    answer = list(filter(lambda x: x % divisor == 0,arr))
    return sorted(answer) or [-1]

 

반응형

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

같은 숫자는 싫어  (0) 2021.09.19
[1차] 다트 게임  (0) 2021.09.15
[Lv.1]두 정수 사이의 합  (0) 2021.09.04
문자열 내 마음대로 정렬하기  (0) 2021.09.04
문자열 내 p와 y의 개수  (0) 2021.09.04
728x90
반응형

출처: 프로그래머스 코딩 테스트 연습 문제

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.제한 조건

  • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
  • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
  • a와 b의 대소관계는 정해져있지 않습니다.

 

%%time

def solution(a, b):
    if a> b: a,b = b,a
    return sum(range(a,b+1))

a = 3
b = 5 
print(solution(a, b))

max 와 min을 이용하여 a,b 크기를 구한다.

def solution(a, b):
    answer = 0
    a, b = max(a,b), min(a, b)
    answer = sum([i for i in range(b, a + 1)]) # 
    # answer = sum(range(b, a + 1))
    return answer

a = 3
b = 5
solution(a, b)

2점이 나왔다. 

하지만 list로 변할 필요 없는데 번거럽게 해서 수정하면

answer = sum(range(b, a + 1))으로 수정하는 것이 좋을 것 같다. 

반응형

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

[1차] 다트 게임  (0) 2021.09.15
나누어 떨어지는 숫자 배열  (0) 2021.09.04
문자열 내 마음대로 정렬하기  (0) 2021.09.04
문자열 내 p와 y의 개수  (0) 2021.09.04
문자열 내림차순으로 배치하기  (0) 2021.09.03
728x90
반응형

출처: 프로그래머스 코딩 테스트 연습 문제

문제 설명

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

제한 조건

  • strings는 길이 1 이상, 50이하인 배열입니다.
  • strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
  • strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
  • 모든 strings의 원소의 길이는 n보다 큽니다.
  • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.

입출력 예 설명

입출력 예 1
"sun", "bed", "car"의 1번째 인덱스 값은 각각 "u", "e", "a" 입니다. 이를 기준으로 strings를 정렬하면 ["car", "bed", "sun"] 입니다.

입출력 예 2
"abce"와 "abcd", "cdx"의 2번째 인덱스 값은 "c", "c", "x"입니다. 따라서 정렬 후에는 "cdx"가 가장 뒤에 위치합니다. "abce"와 "abcd"는 사전순으로 정렬하면 "abcd"가 우선하므로, 답은 ["abcd", "abce", "cdx"] 입니다.

 

%%time

def solution(strings, n):
    answer = sorted(strings, key = lambda x: (x[n],x))
    return answer

strings = ["sun", "bed", "car"]
n = 1
print(solution(strings, n))

 

반응형

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

나누어 떨어지는 숫자 배열  (0) 2021.09.04
[Lv.1]두 정수 사이의 합  (0) 2021.09.04
문자열 내 p와 y의 개수  (0) 2021.09.04
문자열 내림차순으로 배치하기  (0) 2021.09.03
문자열 다루기 기본  (1) 2021.08.28
728x90
반응형

출처: 프로그래머스 코딩 테스트 연습 문제

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

제한사항

  • 문자열 s의 길이 : 50 이하의 자연수
  • 문자열 s는 알파벳으로만 이루어져 있습니다.

입출력 예 설명

입출력 예 #1
'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.

입출력 예 #2
'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 return 합니다.

※ 공지 - 2021년 8월 23일 테스트케이스가 추가되었습니다.

 

%%time

def solution(s):
    return True if s.upper().count('P') == s.upper().count('Y') else False

s= "Pyy"
print(solution(s))

 

다른 사람 풀이 확인 후 :

%%time

def solution(s):
    return s.upper().count('P') == s.upper().count('Y')

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

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

[Lv.1]두 정수 사이의 합  (0) 2021.09.04
문자열 내 마음대로 정렬하기  (0) 2021.09.04
문자열 내림차순으로 배치하기  (0) 2021.09.03
문자열 다루기 기본  (1) 2021.08.28
서울에서 김서방 찾기  (0) 2021.08.22
728x90
반응형

출처: 프로그래머스 코딩 테스트 연습 문제

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.제한 사항

  • str은 길이 1 이상인 문자열입니다.

1. 첫번째 풀이

def solution(s):
    answer = "".join(sorted(s,reverse=True))
    return answer

s = "Zbcdefg"
print(solution(s))

2. 두번째 풀이

def solution(s):
    answer = "".join(sorted(s)[::-1])
    return answer

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

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

문자열 내 마음대로 정렬하기  (0) 2021.09.04
문자열 내 p와 y의 개수  (0) 2021.09.04
문자열 다루기 기본  (1) 2021.08.28
서울에서 김서방 찾기  (0) 2021.08.22
소수 찾기  (0) 2021.08.20
728x90
반응형

출처: 프로그래머스 코딩 테스트 연습 문제

문제 설명

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

제한 사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.

 

 

def solution(s):
    answer = len(list(filter(str.isalpha,list(s))))
    return True if (len(s) == 6 or len(s)==4) and answer==0  else False

 

케이스 5,6 틀린 이유는 :

길이 제한을 안해줘서 그렇다 . 

여기서 길이가 4 혹은 6이여야 한다.

 

반응형

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

문자열 내 p와 y의 개수  (0) 2021.09.04
문자열 내림차순으로 배치하기  (0) 2021.09.03
서울에서 김서방 찾기  (0) 2021.08.22
소수 찾기  (0) 2021.08.20
수박수박수박수박수박수?  (0) 2021.08.20
728x90
반응형

출처: 프로그래머스 코딩 테스트 연습 문제

Level1 

문제 설명

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

제한 사항

  • seoul은 길이 1 이상, 1000 이하인 배열입니다.
  • seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
  • "Kim"은 반드시 seoul 안에 포함되어 있습니다.

def solution(seoul):
    answer = "김서방은 {}에 있다".format(seoul.index("Kim"))
    return answer

 

f string 사용 할 경우 주의점 아래 방식은 오류가 난다.

 

주의할점 : 밖에 " 있을 경우 안에는 ' 있어야 한다.

def solution(seoul):
    answer = f"김서방은 {seoul.index('Kim')} 에 있다"
    
    answer = f'김서방은 {seoul.index("Kim")} 에 있다'
    return answer

seoul = ["Jane", "Kim"]
solution(seoul)

 

def solution(seoul):
    kim = seoul.index("Kim")
    answer = f"김서방은 {kim} 에 있다"
    return answer

seoul = ["Jane", "Kim"]
solution(seoul)
def solution(seoul):
    return ('김서방은 %d 에 있다' %(seoul.index('Kim')))

seoul = ["Jane", "Kim"]
solution(seoul)
반응형

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

문자열 내림차순으로 배치하기  (0) 2021.09.03
문자열 다루기 기본  (1) 2021.08.28
소수 찾기  (0) 2021.08.20
수박수박수박수박수박수?  (0) 2021.08.20
문자열을 정수로 바꾸기  (0) 2021.08.20
728x90
반응형

출처: 프로그래머스 코딩 테스트 연습 문제

문제 설명

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.

소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)

제한 조건

  • n은 2이상 1000000이하의 자연수입니다.

입출력 예 설명

입출력 예 #1
1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환

입출력 예 #2
1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환

 

아래 코드는 시간 초과 되였다.

def isPrimary(n):
    isP = True
    for i in range(2,n//2+1):
        if n % i == 0:
            isP = False
            break
    return isP

def solution(n):
    answer = len(list(filter(lambda x: isPrimary(x) , [i for i in range(2, n+1)])))
    return answer

n = 5
solution(n)

아래 방식으로 하니깐 통과하였다.

 

def isPrimary(n):
    isP = True
    for x in range(2, int(pow(n ,0.5))+1):
        if n%x==0 and n!=x:
            isP = False
            break
    return isP

def solution(n):
    answer = len(list(filter(lambda x: isPrimary(x) , [i for i in range(2, n+1)])))
    return answer

n = 5
solution(n)

 

에라토스테네스 소수

 

반응형

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

문자열 다루기 기본  (1) 2021.08.28
서울에서 김서방 찾기  (0) 2021.08.22
수박수박수박수박수박수?  (0) 2021.08.20
문자열을 정수로 바꾸기  (0) 2021.08.20
시저 암호  (0) 2021.08.20

+ Recent posts