[프로그래머스] Level1 세 문제

HO94·2021년 7월 18일
0

프로그래머스

목록 보기
8/13

2021.07.18

1. 문자열 바꾸기

문제

  • 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
    - 예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
    - str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.

작성한 코드

def solution(s):
    answer = int(s)
    return answer

각자 풀기로한지 5분도 안걸려서 서로 이거 맞나요..? 했던 문제
int()를 쓰면 안되는건가..?
다른 분들 풀이를 보니 정말 다양한 방법으로 풀었던데,,


2. 제일 작은 수 제거

문제

  • 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요.
  • 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요.
    - 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

작성한 코드

def solution(arr):
    answer = []
    if len(arr) > 1:
        arr.remove(min(arr))
        answer = arr
    else:
        answer.append(-1)
    return answer

3. 두 개 뽑아서 더하기

문제

  • 정수 배열 numbers가 주어집니다.
  • numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

작성한 코드

from itertools import combinations

def solution(numbers):
    answer = []
    temp  = list(combinations(numbers, 2))
    
    for i in temp:
        answer.append(i[0]+i[1])
    
    answer = list(set(answer))
    answer.sort()
    
    return answer

테스트에서 두 문제에서 실패가 나왔는데,
알고보니 set()을 써도 정렬이 안되더라
answer.sort()를 추가하니 통과했다.
같이 하는 분은 combinations을 잘 몰라 이중 for문으로 풀었다

def solution(numbers):
    answer = []
    
    for i in range(len(numbers)):
        for j in range(i+1,len(numbers)):
            answer.append(numbers[i] + numbers[j])
        
    return list(set(answer))

0개의 댓글