문제 설명


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

제한조건

 

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

 

입출력 예

 

strings n return
['sun', 'bed', 'car'] 1 ['car', 'bed', 'sun']
['abce', 'abcd', 'cdx'] 2 ['abcd', 'abce', 'cdx']

 

입출력 예 설명


입출력 예 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] 입니다.

 

나의 풀이

 

def solution(strings, n):
    a=[]
    answer=[]
    strings.sort()
    for i in strings:
        a.append(i[n])
    
    a.sort()
    
    for i in a:
        for j in range(len(a)):
            if i == strings[j][n]:
                answer.append(strings[j])
                strings[j]='0'*100
    return answer

1. strings를 정렬해서 각 문자열의 인덱스 n번째를 뽑아 리스트 a에 저장합니다.

2. 리스트 a를 정렬해서 리스트 a의 요소와 strings 요소의 인덱스 n번째를 비교해 같으면 리스트 answer에 저장합니다.

3. strings 요소의 값을 '0'*100으로 바꿉니다. (중복 방지 위해)

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

 

다른 사람의 풀이

 

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

strings를 정렬하고 n번째 요소를 기준으로 다시 정렬합니다.


프로그래머스 '문자열 내 마음대로 정렬하기' : programmers.co.kr/learn/courses/30/lessons/12915

 

코딩테스트 연습 - 문자열 내 마음대로 정렬하기

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

programmers.co.kr

 

문제 설명


두 정수 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의 대소관계는 정해져있지 않습니다.

 

입출력 예

 

a b return
3 5 12
3 3 3
5 3 12

 

나의 풀이

 

def solution(a, b):
    m = min(a, b)
    ab = abs(a-b)
    return sum(range(m, m+ab+1))

1. a와 b 중에 더 작은 것을 구하고 a-b의 절대값을 구합니다.
2. 더 작은 수와 더 작은수 + 절대값의 합을 구해 리턴합니다.

 

다른 사람의 풀이

 

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

a와 b 중에 a가 더 크면 a와 b를 바꾸고 합을 구해 리턴합니다.
b가 더 크면 a와 b 그대로 합을 구해 리턴합니다.

 


프로그래머스 '두 정수 사이의 합' : programmers.co.kr/learn/courses/30/lessons/12912

 

코딩테스트 연습 - 두 정수 사이의 합

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

programmers.co.kr

 

문제 설명


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

제한조건

 

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

 

입출력 예

 

arr divisor return
[5, 9, 7, 10] 5 [5, 10]
[2, 36, 1, 3] 1 [1, 2, 3, 36]
[3,2,6] 10 [-1]

 

입출력 예 설명


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

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

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

 

나의 풀이

 

def solution(arr, divisor):
    answer = []
    
    for i in range(len(arr)):
        if arr[i] % divisor == 0:
            answer.append(arr[i])
    if len(answer) == 0:
        answer.append(-1)
    answer.sort()
    return answer

1. arr 배열에서 divisor로 나눠 떨어지는 원소는 리스트 answer에 넣습니다.
2. arr 배열에서 divisor로 나눠 떨어지는 게 아무것도 없는 경우 리스트 answer에 -1을 넣습니다.

3. 리스트 answer를 정렬해서 리턴합니다.

 

다른 사람의 풀이

 

def solution(arr, divisor):
    return sorted([n for n in arr if n%divisor == 0]) or [-1]

arr 배열에서 divisor로 나눠 떨어지는 원소는 정렬해서 리턴하고 만약 값이 없으면 [-1]을 리턴합니다.


프로그래머스 '나누어 떨어지는 숫자 배열' : programmers.co.kr/learn/courses/30/lessons/12910

 

코딩테스트 연습 - 나누어 떨어지는 숫자 배열

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

programmers.co.kr

 

 

문제 설명


배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,

  • arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
  • arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.

배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.

 

제한조건

 

  • 배열 arr의 크기 : 1,000,000 이하의 자연수
  • 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수

입출력 예

 

arr answer
[1,1,3,3,0,1,1] [1,3,0,1]
[4,4,4,3,3] [4,3]

 

입출력 예 설명


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

나의 풀이

 

def solution(arr):
    answer=[]
    for i in range(1,len(arr)):
        if arr[i-1] != arr[i]:
            answer.append(arr[i-1])
    answer.append(arr[-1])
    
    return answer

1. 배열 arr의 앞자리와 뒷자리의 원소를 비교하여 서로 다르면 뒷자리의 원소를 리스트 answer에 추가합니다.
2. 배열 arr의 마지막 원소도 리스트 answer에 추가합니다.

 


프로그래머스 '같은 숫자는 싫어' : programmers.co.kr/learn/courses/30/lessons/12906

 

코딩테스트 연습 - 같은 숫자는 싫어

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은

programmers.co.kr

 

문제 설명


단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

제한조건

 

  • s는 길이가 1 이상, 100이하인 스트링입니다.

 

입출력 예

 

s return
'abcde' 'c'
'qwer' 'we'

 

나의 풀이

 

def solution(s):
    a = len(s) // 2
    if len(s) % 2 == 0:
        return s[a-1:a+1]
    else:
        return s[a]

1. 문자열의 길이를 2로 나눠 짝수인 경우 두글자를 출력하고 홀수인 경우 한글자를 출력합니다.

다른 사람의 풀이

 

def solution(s):
	return s[(len(s)-1)//2:len(s)//2+1]

짝수인 경우 두글자를 출력하고 홀수인 경우 한글자를 출력합니다.

 


프로그래머스 '가운데 글자 가져오기' : programmers.co.kr/learn/courses/30/lessons/12903

 

코딩테스트 연습 - 가운데 글자 가져오기

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret

programmers.co.kr

 

문제 설명


2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT

입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요.

 

제한조건

 

  • 2016년은 윤년입니다.
  • 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

 

입출력 예

 

a b result
5 24 'TUE'

 

나의 풀이

 

def solution(a, b):
    y =[31,29,31,30,31,30,31,31,30,31,30,31 ]
    n=['FRI','SAT','SUN','MON','TUE','WED','THU']
    k=sum(y[:a-1]) + b-1
    return n[k % 7]

각 요일의 이름과 달의 마지막 날짜를 리스트로 저장합니다.
a월 b일을 구하기 위해 a달 전까지의 날짜를 더하고 b일을 더해줍니다.

(1월 1일은 금요일이니까 하루 계산해주었기 때문에 -1 하기)

계산한 날짜로 요일의 수인 7을 나눠 값을 구합니다.

 


프로그래머스 '2016년' : programmers.co.kr/learn/courses/30/lessons/12901

 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까��

programmers.co.kr

 

+ Recent posts