문제

팀의 막내인 철수는 아메리카노와 카페 라테만 판매하는 카페에서 팀원들의 커피를 사려고 합니다. 아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원입니다. 각 팀원에게 마실 메뉴를 적어달라고 하였고, 그 중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고 "아무거나"를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였습니다.

각 직원이 적은 메뉴가 문자열 배열 order로 주어질 때, 카페에서 결제하게 될 금액을 return 하는 solution 함수를 작성해주세요. order의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같습니다.

어렵지 않은 문제인데, 내가 옛날에 풀 때 생각하던 것들을 글로 정리하고자 하여 굳이굳이 포스팅으로 남긴다.

링크

프로그래머스 - 커피 심부름

맹...점?

문제가 살짝 짚지 못 한? 점이 있는데.
(레벨 0 문제라서 그런건가...?) (...라기엔 정수를 나선형으로 배치하기는 왜 그렇게 어려웠는가 밸패좀요)

핫, 아이스가 가격 변동이 없다는 점이다.

좀 의아하긴 하지만, 계산할 때 라떼만 500원 추가하면 되는 구조인 것.

그래서 그렇게 썼다. .contains 메소드를 활용해서.

코드

import Foundation

func solution(_ order:[String]) -> Int {
    var result: Int = 0
    
    order.forEach { drink in 
        if drink.contains("latte") {
            result += 5
        }
        result += 45
    }
    
    return result * 100
}

Q. 근데 왜 굳이 숫자를 100으로 나눈 걸 쓰고 리턴 직전에 100을 곱했나요?

그러게요.
저거 풀 때는 그냥 작게 써보고 싶어서 했는데, 글을 쓰는 지금 시점에서 생각해보니,
64비트 정수를 기본값으로 쓰는 요즘 시대에 이게 의미가 있을까 싶긴 합니다.

참고로 Swift의 Int의 범위는 (signed Int64) 기본적으로 이렇습니다:
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

하지만 색달랐죠?

암튼 색달랐잖습니까?

글고 Swift Int가 기본적으로 갖는 범위가 어딘지도 배웠고 말이에요.

조금 추가하자면,
32비트 시스템에선 기본적으로 Int 자료형이 Int32,
64비트 시스템에선 기본적으론 Int64입니다만,
iOS 11 이상은 모두 64비트 아키텍쳐를 쓰는 게 기본이라 진짜 오래된 기기 아니면 64비트라고 보면 되겠습니다.
출처:
Apple Developer Documentation - [Swift] Int
Apple Developer Documentation - [UIKit] Updating your app from 32-bit to 64-bit architecture

여튼 그렇습니다.

2개의 댓글

comment-user-thumbnail
2024년 11월 7일

짤 속 캡아 말투랑 글쓴이 말투랑 똑같아서 더 어이없네요. 캡하민 덕분에 Int의 용량에 대해 알고 갑니다.

1개의 답글