Algorithm/프로그래머스

[프로그래머스 : 코딩테스트 연습 - Swift] 아이스 아메리카노

버스트 캐넌 2023. 10. 18. 00:27

글 작성에 앞서 본 블로그의 모든 게시글은 블로그 주인의 개발 일지(일기) 형태의 게시글입니다.

정보를 나누는 방식보단, 제가 했던 방식을 공유하는 식의 글이라 읽어도 제대로 이해를 못 하실 수 있거나 더 좋은 다른 방법이 존재할 수 있습니다.

이 점 양해해 주시며 본 블로그의 게시글을 읽어주시면 감사하겠습니다.

programmers

안녕하세요 버스트캐넌입니다.

 

오늘도 문제 정답률이 바뀌었네요.. 흠... 

 

정답률이 다시 올려도 정답률 높은 순에서 더 밑에 있는 문제를 풀겠습니다.

 

오늘 풀 문제는 아이스 아메리카노입니다.

 

문제


문제 설명

  • 머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해 보세요.

제한사항

  • 0 < money ≤ 1,000,000

 

입출력 예

  • n = 5500, return = [0,1]
  • 5,500원은 아이스 아메리카노 한 잔을 살 수 있고 잔돈은 0원입니다.

 

풀이


import Foundation

func solution(_ money:Int) -> [Int] {
    guard money > 0, money <= 1000000 else { return [0] }
    
    var coffee: [Int] = [0,0]
    
    coffee[0] = money / 5500
    coffee[1] = money % 5500
    
    return coffee
}

 

기본 개념


Array (배열)

var 변수명: [타입] = [값1,값2, ...]

배열입니다.

 

배열은 다른 객체들의 집합을 담을 수 있는 객체입니다.

 

배열을 처음 선언하고 초기화를 할 때는 위의 코드로 하면 됩니다.

print(array[0])
-> 첫번째 값

배열의 특정위치에 있는 값을 불러오는 방법입니다.

 

배열은 0번째 자리부터 시작해서, 첫 번째 값을 불러오려면 array[0]을 하셔야 합니다.

array[0] = 1

값을 불러오는 방법을 참고해서 위의 방법처럼 특정자리의 항목을 바꿀 수도 있습니다.

array.count

해당 배열의 항목 개수를 알려주는 방법입니다.

array.append(항목)
array += [항목]
array += [항목1,항목2]

배열에 항목을 추가하는 방법입니다.

 

추가된 항목은 배열의 맨뒤부터 하나씩 들어갑니다.

array.remove(at: 0)
array.removeLast

첫 번째 줄은 at: 에 해당되는 자리의 항목을 없애는 방법입니다.

 

두 번째 줄은 배열의 마지막 항목을 삭제하는 방법입니다.

 

코드 풀이


guard money > 0, money <= 1000000 else { return [0] }

조건에 맞는 값만 넘겨주기 위해 생성한 코드입니다.

 

주워들은 바로는, 레벨 0의 초보 문제에선 굳이 안 적어도 상관없다고 하네요.

 

(그래서 다른 분들 코드에 저런 게 없었나...)

 

var coffee: [Int] = [0,0]

return 할 배열을 만들기 위해 배열을 선언해주었습니다.

 

coffee[0] = money / 5500
coffee[1] = money % 5500
return coffee

그런 다음, 마실 수 있는 아메리카노 개수와 잔돈을 각각 첫 번째, 두 번째 자리에 넣어주었습니다.

 

그렇게 만들어진 coffee라는 배열을 return 해주었죠.

야호 정답입니다.

 

다른 사람 코드 탐구


이 시간의 하이라이트인 다른 사람 코드 탐구가 왔습니다.

 

바로 구경해 보죠.

 

import Foundation

func solution(_ money:Int) -> [Int] {
    return [money / 5500, money % 5500]
}

 

아니.. 10...

 

제가 처음 접했던 문제에서 배운 게 없나 봅니다.

 

두수 덧셈 문제였는데 위의 코드처럼

 

return a+b 하면 끝날 문제를 이상하게 선언하고 코드가 엄청 길어졌었죠.....

 

특별한 조건이 없는 문제라 바로 수를 받아서 return 해주면 됩니다.

 

허무하네요.

import Foundation

func solution(_ money:Int) -> [Int] {
    var result : [Int] = []

    let qnt : Int = money / 5500
    let remain : Int = money - (qnt * 5500)

    result.append(qnt)
    result.append(remain)

    return result
}

다른 분의 코드를 더 들고 왔습니다. 

 

저랑 비슷하면서 다른데, 여기서는 .append를 사용하여 배열을 추가해 주었습니다.

 

저는 [0], [1]을 이용하여 배열을 추가해 주었는데, 이렇게 하면 배열을 초기에 선언할 때 해당 자리의 항목이 존재 해야 합니다.

 

그래서 제가 처음 선언할때 [Int] = [0,0]으로 선언한 이유가 이것 때문입니다.

 

.append를 사용하면 선언할 때 배열을 초기화만 해두면 되어서 더 편한 코드인 것 같습니다.

 

코딩테스트 풀이는 여기까지 하겠습니다.

 

저번주 일요일에 문제를 풀어서 주 3개를 채우려 했으나.. 실패했네요. ㅠ

 

평균 주 3회라고 했으니 이번주에 4개를 풀겠습니다.

 

포스팅 읽어주셔서 감사합니다.

 

좋은 하루 보내세요~

 

궁금한 점이나 지적해야 할 부분이 있으시면 댓글 남겨주세요. 블로그 주인의 상황에 따라 답변이 없을 수 있으나, 최대한 피드백해 드리겠습니다.