<폰 싸게사는법 시리즈>

1편 호갱 안당하는법(현재글)

2편 자급제폰과 알뜰요금제(클릭)



이 포스팅에서는 자급제폰이나 공기계구입+알뜰통신사 등에 대해서는 다루지 않는다. 그건 2편에서 다루기로 하고 일반적으로 휴대폰을 가장 많이 구매하는 루트인 SK/KT/LG의 통신사 핸드폰 싸게사는법에 대해 써보도록 하겠다.



일단 몇가지 간단한 용어들을 확인하고 넘어가자. 공시지원금 선택약정 등은 뒤에서 자세히 설명한다.


현금완납 : 휴대폰 구매시 기기값을 현금으로 한번에 납부하는것

할부 : 기기값을 할부로 구매



약정기간 : 내가 12개월/24개월 동안 이 통신사를 계속 이용하기로 약속

할부기간 : 기기값을 나눠서 내는 기간

할부원금 : 할부거래로 구매시 내가 내는 기기값


부가서비스 : 판매점에서 요금제 외에 추가적으로 가입시키는 서비스


페이백 : 휴대폰을 구매하면 돈을 줌





우리가 새 폰을 살 때 보통 다음과 같은 과정을 거친다.







1 위약금 확인


현재 쓰고있는 핸드폰으로 114에 전화를 걸어서 직원연결 후 남은 약정기간과 위약금을 확인한다. 약정기간이 많이 남았다면 꼭 필요한 경우를 제외하고는 새 휴대폰 구입은 잠시 미뤄두자. 만약 남은 약정기간이 6개월이하라면 기변으로 구매해야 위약금을 물지 않는다. 기변이란 내가 쓰던 통신사 그대로 기기변경하는것을 말한다. 기변과 기기변경은 같은말이다.



번호이동,번이는 통신사를 변경하는것을 말한다. 번호이동이라는 이름 때문에 번호가 바뀌는건가 많이들 헷갈려하는데 쓰고있는 휴대폰 번호는 바뀌지 않는다. 통신사만 바뀐다.


보통 번호이동이 기기변경보다 15-20만원정도 저렴하지만 인터넷할인, 가족할인등으로 묶여있는 경우에는 번이보다 기변이 나은 경우가 있다. 예를 들어 SK는 온가족의 SK 가입년수를 합쳐 30년이 넘으면 요금을 50%할인해 준다. 이경우에는 기변이 더 유리하다.








2 휴대폰 모델 고르기


최신플래그쉽은 아무래도 그만큼 비싸다. 출시된지 1-2년정도 된 휴대폰들은 상대적으로 저렴하면서도 스펙좋은 모델들을 구할수가 있다. 안드로이드vs아이폰, 삼성vs엘지 등 이건 개인의 취향에 따라 선택하면 된다. 나는 폰 기종은 아무래도 상관없다 싶으면 약정시 기기값이 0원인 모델(페이백까지 받을수 있으면 더 좋고)을 고르면 된다. 사려는 폰을 골랐으면 공시지원금과 선택약정 중 어떤걸 골라야 유리한지 확인해보자.



공시지원 선택약정할인 차이는 휴대폰 기기값을 할인받느냐 아니면 매달내는 요즘을 할인받느냐의 차이이다. 일반적으로 안드로이드는 공시지원금이, 아이폰은 선택약정할인이 유리하다. 그리고 요금제를 6만원이상 고액요금제를 사용한다면 선택약정이 유리하다.


선택약정은 어떤 요금제든 25%를 할인이고 휴대폰 모델별 공시지원금은 아래 사이트에서 확인 가능하다. 단통법 시행으로 전국 공시지원금이 정해졌지만 실제로는 그 가격보다 싸게 살 수 있으니 참고만 하자.


http://www.smartchoice.or.kr/smc/smartlife/dantongList.do




그러면 어떻게 휴대폰을 더 싸게 구입할 수 있을까?




예를 들어 100만원짜리 휴대폰의 공시지원금이 30만원으로 정해져있다. 원래는 전국 모든 매장에서 70만원에 팔아야 한다. 그런데 핸드폰가게는 휴대폰을 팔면 20만원의 리베이트를 받는다. 그러면 받을 리베이트에서 고객에게 10만원을 지원해주더라도 10만원의 이득이 생긴다. 이걸 이용해서 현금완납으로 핸드폰 싸게사는법 이 가능한 것이다. 원래 고객인 나에게 70만원을 받았어야 하는데 실제로는 60만원만 받은 뒤 계약서에 현금완납이라고 적는것이다. 페이백도 같은 원리로 가능한 것이다. 한가지 유의할점은 불법이기 때문에 페이백을 당일에 그자리에서 받는게 아니라면 믿을만한 게 못된다. 주기로 해놓고 안줘도 어떻게 강제할 방법이 없다. 한달뒤에 계좌로 페이백 해주겠다 하는곳은 그냥 거르자.







3. 시세확인


내가 사려는 휴대폰의 시세를 온라인으로 확인하자. 뽐뿌나 알고사, 네이버밴드 등을 눈팅한다. 여기서 말하는 시세란 보통 69요금제를 쓸 경우의 현금완납 시세를 말한다. 가격은 계속 달라지므로 구매하기 하루이틀 전에 확인하면 된다.


※ 눈팅전 은어확인 ※ 대부분 위에서 다룬 용어들의 줄임말이나 자음이라고 보면 된다. 어렵지 않게 유추할 수 있을 것이다.



현완,현아,ㅎㅇ : 현금완납


스크,ㅅㅋ : SK

크트,ㅋㅌ : KT

르그,ㄹㄱ : LG


ㅅㅍ,스팟,대란 : 좋은조건으로 구매할수있는 가격이 뜸


ㄱㅂ : 기기변경(기변)

ㅂㅎㅇㄷ,ㅂㅇ : 번호이동(번이)


: 요금제


선약,ㅅㅇ : 선택약정

ㅍㅇㅂ : 페이백


ㄱㅂ,ㄱㅂㅌㅋㄴ : 강변테크노마트

ㅅㄷㄹ,ㅅㄷㄹㅌㅋㄴ : 신도림테크노마트


ㅂㅁ,부무 : 부가서비스X

ㅂㅇ,부유 : 부가서비스O


갤럭시는 우주, 아이폰은 사과 등으로 부르기도 한다. 이것도 보다보면 금방 적응할 것..



<예시>

s20 ㅅㅋㄱㅂ ㅎㅇ 29면 괜찮나요? > 갤럭시s20 SK 기변 현금완납 69만원이면 괜찮은 가격인가요?

아이폰11 르그번이 599욕 선약 얼만가요? > 아이폰11 LG 번호이동 599요금제로 선택약정하면 할부금 얼마나오나요?



뽐뿌 휴대폰 포럼

http://www.ppomppu.co.kr/zboard/zboard.php?id=phone



알고사 자유게시판

http://rgo4.com/free







4 구매


자 이제 현금을 뽑아서 오프라인으로 구매하러 가보자. 신도림이나 강변이 가장 싸긴 하지만 잘 모르고 가면 호갱잡힐 수도 있다. 그리고 멀리까지 가서 발품파는 시간도 결국 돈이기 때문에 내가 확인한 시세에 5~10만원 정도를 더 얹어서 동네가게에서 사는것도 아주 나쁘진 않다.



테크노마트에 가면 에스컬레이터에서 내리자마자 폰팔이들이 말을 걸 것이다. "잘해드릴게요" "어떤거 보러 오셨어요?" 등등... 눈이 마주치면 왠지 그 가게에서 사야될것 같은 느낌이 든다. 하지만 이들은 게임으로치면 npc라고 보면 된다. 그냥 무시하고 지나가자. 물론 가서 말을 걸어도 된다. 어차피 나는 오늘 수많은 npc들중 하나에게 휴대폰을 구매하러 왔으므로.



내가 온라인으로 확인한 갤럭시S9+의 SK번이 시세가 37만원이라고 치자. 그러면 아무 npc한테나 다가가서 "갤럭시S9+ SK번이 현완 어디까지 가능해요?"라고 물어본다. 이때 일단 앉아보라거나 차한잔 준다고 하는데 그냥 쌩까고 가격이나 빨리 알려달라고 하자. 나는 앉았다가도 잘 일어서는 사람이지만(ㅋㅋ) 보통 앉아서 차한잔 마시면 일어나서 나오기가 어려우니 그냥 서서 바로 물어보면 된다.



그러면 폰팔이들이 대답 대신 계산기에 숫자를 찍어준다. 말을 하지 않는 이유는 폰파라치들의 녹취를 피하기 위해서이다. 계산기에 찍어주는 가격이 35일수도, 37일수도 40일수도 있다. 가게마다 가격이 약간씩 다르다. 알겠다고 하고 다른가게에서 반복한다. 최소 10군데 정도 돌아보고 가장 저렴한 곳에 가서 구매하면 된다. 이때 계약서를 꼭 확인하자. 할부원금이 0원이라고 써있어야 한다.



가끔은 69요금제 대신 79요금제를 사용하면 더 싸게 해준다고 하는 경우가 있다. 높은 요금제일수록 판매자에게 떨어지는 리베이트가 크기 때문에 그렇다. 원래 고액요금제를 쓰는 사람은 상관없겠지만 낮은 요금제를 사용하던 사람은 해당 요금제를 6개월 사용함으로써 추가적으로 드는 요금제를 계산해보고 결정하면 된다. 예를 들어 내가 평소에 59요금제를 사용하는데 79요금제를 6개월간 써야 한다면 2만원X6개월=12만원의 추가지출이 생긴다. 59요금제의 공시지원금보다 79요금제의 공시지원금이 12만원이상 싸지 않다면 굳이 높은 요금제를 사용할 필요가 없다.






5 카드할인을 해야하는가?


폰팔이들이 신용카드를 만들라고 하는 경우가 있다. 나쁜건 아니다 진짜 할인이 되긴 된다. 하지만 여기서 중요한것은 카드할인은 통신사나 판매점에서 해주는 할인이 아니라는 것이다. 자기가 깎아주는 것인양 말하는 폰팔이는 거르면 된다. 카드할인은 일정 금액 이상 실적을 채우면 카드사에서 해주기 때문에 그날이 아니더라도 나중에 언제든 내가 해당 신용카드를 카드사에서 발급받아서 할인받으면 된다.






다음글 : 폰 싸게사는법 2편 - 자급제폰과 알뜰요금제








LeetCode 문제 중 난이도 EasyRemove Outermost Parentheses이다. 문제 링크는 포스팅의 맨 마지막에 추가하였다. 언어는 Java를 사용했다.




  문제해석

유효한 괄호 문자열은 비어있는 (""), "(" + A + ")", 또는 A + B이다. 여기서 A와 B는 유효한 괄호 문자열이며, +는 문자열의 연결을 나타낸다. 예를 들어 "", "()", "(())()", "(()(()))"는 모두 유효한 괄호 문자열이다.

유효한 괄호 문자열 S가 비어 있지 않고, A와 B가 비어 있지 않은 유효한 괄호 문자열을 사용하여 S = A+B로 분할할 수 있는 방법이 없으면 원시적이라고 한다.

주어진 유효한 괄호 문자열 S의 원시분해를  S = P_1 + P_2 + ... + P_k라 하자. (P_i는 원시적인 유효한 괄호 문자열)

S의 원시 분해에서 가장 바깥쪽 괄호를 제거한 모든 원시 문자열을 반환해라.







가장 바깥쪽 괄호인지 체크하기 위해서 open이라는 변수를 사용한다. i번째 인덱스가 여는괄호이면 +1, 닫는괄호이면 -1을 해준다. open이 양수면 괄호가 열린상태이다.


open이 0일때의 여는괄호와 1일때의 닫는괄호가 가장 바깥쪽 괄호일 것이다. 가장 바깥쪽 괄호를 제거하기 위해서 open이 0일때 여는괄호와 open이 1일때 닫는괄호가 아닌 문자들만 sb에 덧붙인다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
    public String removeOuterParentheses(String S) {
        
        StringBuilder sb = new StringBuilder();
        int open = 0;
        
        for(int i = 0 ; i<S.length() ; i++){
            if(S.charAt(i) == '(' ){
                if(open != 0) sb.append(S.charAt(i));
                open++;
            }else{
                if(open != 1) sb.append(S.charAt(i));
                open--;
            }    
        }
        return sb.toString();
    }
}
cs


이 풀이의 시간복잡도는 O(n)이고 공간복잡도도 O(n)이다.






문제출처 - https://leetcode.com/problems/remove-outermost-parentheses/





LeetCode 문제 중 난이도 EasyArranging Coins 이다. 문제링크는 포스팅의 맨 마지막에 추가하였다. 언어는 Java를 사용했다.




  문제해석


총 n개의 동전을 가지고 k번째 줄에는 k개의 동전이 오도록 계단모양으로 배열해보자.

주어진 n으로 만들 수 있는 온전한 계단의 최대 라인수를 찾아라.

n은 음수가 아닌 정수로 부호가 있는 32비트 정수의 범위내에 있다.






k번째까지 계단모양을 채우려면 동전의 갯수가 1+2+3+...+k개 필요하다. 1부터 k까지의 숫자의 합은 k(k+1)/2이다. 그러면 n≥k(k+1)/2을 만족하는 k를 찾아야 한다. 중학생 때 배운 완전제곱식을 이용하여 k에 관한 형태로 바꾸어준다.






결과적으로 k는 2n+0.25의 제곱근에서 0.5를 뺀 값보다 작거나 같을 것이다. 구하려는 값은 해당 부등식을 만족하는 자연수 k의 최댓값이므로 좌변의 식에서 소수점을 버림하면 자연수 k의 최댓값을 구할 수 있다. 입력값 n은 정수만 담을 수 있는 int 자료형이므로 소수점 계산을 하기 위해 double 자료형을 이용한다. 코드로 작성하면 다음과 같다.


1
2
3
4
5
6
7
8
9
class Solution {
    public int arrangeCoins(int n) {
        
        if(n<2return n;
        
        double result = (Math.sqrt(2*n+0.25))-0.5;
        return (int)result;
    }
}
cs


double 자료형이 익숙하지 않다면 삐멜소프트웨어 엔지니어 - 자바 변수와 자료형(float,double) 포스트를 참고하자.





잘 돌아갈 것 같지만 문제가 하나 있다. 문제에서 n은 32-bit signed integer라고 하였다. 이게 무슨 말이냐 하면 32비트 중 가장 첫번째 비트는 부호비트로 쓰인다는 것이다. 32-bit signed integer로 나타낼 수 있는 범위는 -2,147,483,648 ~ 2,147,483,647이다. 삐멜소프트웨어 엔지니어 - 자바 변수와 자료형(byte,short,int,long)




input으로 받는 n에 2를 곱한 값이 2^31 이상이면 맨앞의 sign bit가 1이 되어 음수로 바뀐다. 이 문제를 해결하기 위해 long자료형을 이용하자. 아래는 이해를 돕기 위한 코드고 실제로 사용할 때에는 L만 붙여주면 자동으로 long자료형으로 바뀐다.


1
2
3
4
5
6
7
8
9
10
11
class Solution {
    public int arrangeCoins(int n) {
        
        if(n<2return n;
        long twoN = 2*(long)n;
        
        double result = (double)(Math.sqrt(twoN+0.25))-0.5;
        return (int)result;
    }
    
}
cs







문제 해결 완료!


1
2
3
4
5
6
7
8
9
class Solution {
    public int arrangeCoins(int n) {
        
        if(n<2return n;
        
        double result = (double)(Math.sqrt(2L*n+0.25))-0.5;
        return (int)result;
    }
}
cs


시간복잡도는 O(1), 공간복잡도는 O(1)이다.





문제출처 - https://leetcode.com/problems/arranging-coins/



+ Recent posts