๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/๐Ÿต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(Java)

๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ฐ”๊พธ๊ธฐ

by carrot0911 2024. 11. 3.

๋ฌธ์ œ ์„ค๋ช…

https://school.programmers.co.kr/learn/courses/30/lessons/12925

๋ฌธ์ž์—ด s๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • s์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 5 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • s์˜ ๋งจ ์•ž์—๋Š” ๋ถ€ํ˜ธ(+, -)๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • s๋Š” ๋ถ€ํ˜ธ์™€ ์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • s๋Š” "0"์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

์˜ˆ๋ฅผ ๋“ค์–ด str์ด "1234"์ด๋ฉด 1234๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , "-1234"์ด๋ฉด -1234๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
str์€ ๋ถ€ํ˜ธ(+, -)์™€ ์ˆซ์ž๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , ์ž˜๋ชป๋œ ๊ฐ’์ด ์ž…๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

class Solution {
    public int solution(String s) {
        int answer = 0;

        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '+' || s.charAt(i) == '-') {
                continue;
            } else {
                answer = answer * 10 + (s.charAt(i) - '0');
            }
        }
        
        if (s.charAt(0) == '+' || s.charAt(0) == '-') {
            char pm = s.charAt(0);
            
            if (pm == '-') {
                answer = answer * (-1);
            } else {
                answer = answer;
            }
        }
        
        return answer;
    }
}

์ฝ”๋“œ ์„ค๋ช…

๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด์„œ ๋ฌธ์ž ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ์ •์ˆ˜๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.

if (s.charAt(i) == '+' || s.charAt(i) == '-') { continue }
์ˆซ์ž ์•ž์— ๋ถ€ํ˜ธ๊ฐ€ ๋ถ™์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•˜์—ฌ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค.
charAt(i)์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ char ํƒ€์ž…์œผ๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•˜๊ณ  ์ž‘์€๋”ฐ์˜ดํ‘œ('')๋ฅผ ์ด์šฉํ•ด์„œ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๊ฐ€ '+' ๋˜๋Š” '-'์ผ ๊ฒฝ์šฐ continue๋ฅผ ํ†ตํ•ด ๋‹ค์Œ ์ธ๋ฑ์Šค์˜ ๋ฌธ์ž๋กœ ๋„˜์–ด๊ฐ€๋„๋ก ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

answer = answer * 10 + (s.charAt(i) - '0')
charAt(i)๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ i๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๋ฌธ์ž๋ฅผ char ํƒ€์ž…์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.
ํ•˜์ง€๋งŒ int ํƒ€์ž…์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— int ํƒ€์ž…์œผ๋กœ ๋ฐ”๊ฟจ์„ ๋•Œ ASCII ์ฝ”๋“œ ๊ฐ’์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค๋Š” ์ ์„ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค. ASCII ์ฝ”๋“œ๋กœ ๊ณ„์‚ฐํ•  ๊ฒƒ์„ ์ƒ๊ฐํ•˜๊ณ  ๋’ค์— - '0'์„ ๋ถ™์—ฌ์„œ ์›ํ•˜๋Š” int ํƒ€์ž…์˜ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
๋˜ํ•œ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก answer * 10์„ ํ†ตํ•ด ๊ฐ’์„ 10 ๋‹จ์œ„์”ฉ ์ฆ๊ฐ€ํ•˜๊ณ  1์˜ ์ž๋ฆฌ์— i๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ์ž…๋ ฅํ•œ๋‹ค.

๋ฐ˜๋ณต๋ฌธ์ด ์ข…๋ฃŒ๋˜๊ณ  ๋‚œ ํ›„ ๋ฌธ์ž์—ด์˜ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ํ™•์ธํ•ด์„œ '+' ๋˜๋Š” '-'์ผ ๊ฒฝ์šฐ์˜ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

if (s.charAt(0) == '+' || s.charAt(0) == '-') { char pm = s.charAt(0); }
0๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ๋ฌธ์ž๊ฐ€ '+', '-' ๋ถ€ํ˜ธ์ผ ๊ฒฝ์šฐ char ํƒ€์ž…์˜ pm์— ๊ฐ’์„ ์ž…๋ ฅํ•œ๋‹ค.

๋ณ€์ˆ˜ pm์— ์ €์žฅ๋œ ๊ฐ’์ด '+'์ผ ๊ฒฝ์šฐ์—๋Š” answer ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ, '-'์ผ ๊ฒฝ์šฐ์—๋Š” answer * (-1)๋ฅผ ํ†ตํ•ด ์Œ์ˆ˜ ๊ฐ’์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.