Problem ๐Ÿ’ป

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

๋ฌธ์ œ ์„ค๋ช…

๋ฌธ์ž์—ด my_string์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. my_string์•ˆ์˜ ๋ชจ๋“  ์ž์—ฐ์ˆ˜๋“ค์˜ ํ•ฉ์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ
  • 1 ≤ my_string์˜ ๊ธธ์ด ≤ 1,000
  • my_string์€ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž ๊ทธ๋ฆฌ๊ณ  ํ•œ์ž๋ฆฌ ์ž์—ฐ์ˆ˜๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆmy_stringresult
"aAb1B2cC34oOp" 10
"1a2b3c4d123" 16

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • "aAb1B2cC34oOp"์•ˆ์˜ ํ•œ์ž๋ฆฌ ์ž์—ฐ์ˆ˜๋Š” 1, 2, 3, 4 ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1 + 2 + 3 + 4 = 10 ์„ returnํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • "1a2b3c4d123Z"์•ˆ์˜ ํ•œ์ž๋ฆฌ ์ž์—ฐ์ˆ˜๋Š” 1, 2, 3, 4, 1, 2, 3 ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16 ์„ returnํ•ฉ๋‹ˆ๋‹ค.

์œ ์˜์‚ฌํ•ญ
  • ์—ฐ์†๋œ ์ˆซ์ž๋„ ๊ฐ๊ฐ ํ•œ ์ž๋ฆฌ ์ˆซ์ž๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

Approach 1 โŒ- ๋‚˜์˜ ์ดˆ๊ธฐ ์ ‘๊ทผ ๋ฐฉ์‹

String์˜ ํ•˜๋‚˜์˜ ์š”์†Œ๋งˆ๋‹ค intํ˜•์ธ์ง€ ํ™•์ธํ•ด์•ผ ํ•จ. 

- my_string.charAt(i)๋กœ for๋ฌธ์„ ๋Œ๋ ค์„œ intํ˜•์ธ์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋Š”๋ฐ ์›๋ž˜ String์„ intํ˜•์œผ๋กœ ๋ถ€๋ถ„ ๋ณ€ํ™˜์ด ํ•„์š”ํ•˜๋‹ค.

์ด๋•Œ ๋ชจ๋‘ String์˜ ํƒ€์ž…์„ ์ˆซ์ž๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ•˜์ง€?

if๋ฌธ์œผ๋กœ String ํƒ€์ž…์˜ 1~9๊นŒ์ง€ ๋ชจ๋‘ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š”๊ฑด ๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋กญ๋‹ค.

 


Approach 2 โญ• - ๋‚˜์˜ ์ดˆ๊ธฐ ์ ‘๊ทผ ๋ฐฉ์‹์— ๋Œ€ํ•œ ๋ณด์™„

๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ž์—ฐ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ณ , ์ด๋ฅผ ๋”ํ•˜๋Š” ๋ฐฉ์‹์€ ์ ์ ˆํ•œ ํ•ด๊ฒฐ์ฑ…์ด์˜€๋‹ค.

1. my_string.charAt(i)๋กœ ๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ์ˆœํšŒํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด๋Š” ์˜ฌ๋ฐ”๋ž๋‹ค.
2. ์ž์—ฐ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜, ์ˆซ์ž์™€ ๋งค์นญ์„ ํ™•์ธํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค.
3. ์ˆซ์ž๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด String์—์„œ int๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜, ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์ˆซ์ž์ธ์ง€ ํŒ๋ณ„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ ‘๋Š” ๋ฐฉ์‹์—์„œ ๊ฐœ์„ ํ•  ์ˆ˜ ์ž‡๋Š” ์ ๊ณผ ๋” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. 


๋ณด์™„ํ•ด์•ผ ํ•  ์ 

 

1. ์ˆซ์ž ํŒ๋ณ„์˜ ๋ฒˆ๊ฑฐ๋กœ์›€ ์ œ๊ฑฐ

 if ๋ฌธ์œผ๋กœ “1”์—์„œ “9”๊นŒ์ง€ ๋งค์นญ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ํ™•์ธํ•˜๋Š” ๋Œ€์‹ , Java์˜ ๋‚ด์žฅ ๋ฉ”์„œ๋“œ๋‚˜ ๊ฐ„๋‹จํ•œ ๋…ผ๋ฆฌ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

• Character.isDigit() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž๊ฐ€ ์ˆซ์ž์ธ์ง€ ๊ฐ„๋‹จํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. ๋ฌธ์ž -> ์ˆซ์ž ๋ณ€ํ™˜

์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ, ๋ฌธ์ž์—์„œ ‘0’์„ ๋นผ๋ฉด ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. (์˜ˆ: '5' - '0'์€ 5๊ฐ€ ๋œ๋‹ค.)

 ๊ตณ์ด ๋ณต์žกํ•œ ํƒ€์ž… ๋ณ€ํ™˜ ์—†์ด ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค.

<๋ฌธ์ž์™€ ์ˆซ์ž์˜ ๊ด€๊ณ„>

1. ๋ฌธ์ž์™€ ์•„์Šคํ‚ค ์ฝ”๋“œ
์ปดํ“จํ„ฐ๋Š” ๋ฌธ์ž๋ฅผ ์ €์žฅํ•  ๋•Œ ์•„์Šคํ‚ค ์ฝ”๋“œ๋ผ๋Š” ์ˆซ์ž ๊ฐ’์œผ๋กœ ์ €์žฅํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด :
๋ฌธ์ž '0'์˜ ์•„์Šคํ‚ค ๊ฐ’์€ 48
๋ฌธ์ž '1'์˜ ์•„์Šคํ‚ค ๊ฐ’์€ 49

2. ๋ฌธ์ž์—์„œ '0'์„ ๋นผ๋Š” ์ด์œ 
์ˆซ์ž ๋ฌธ์ž์˜ ์•„์Šคํ‚ค ๊ฐ’์—์„œ '0'(์ฆ‰,48)์˜ ์•„์Šคํ‚ค ๊ฐ“์„ ๋นผ๋ฉด, ํ•ด๋‹น ์ˆซ์ž์˜ ์ •์ˆ˜ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
์˜ˆ: 
'5'- '0' = 53 - 48 = 5

3. ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜?
์ž๋ฐ”์—์„œ ๋ฌธ์ž(char)๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์ •์ˆ˜ ๊ฐ’(์•„์Šคํ‚ค ๊ฐ’)์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.
๋”ฐ๋ผ์„œ '5'-'0'๋Š” ๋‘ ์•„์Šคํ‚ค ๊ฐ’์˜ ์ฐจ๋ฅผ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ๋กœ, ์ด๋ฅผ ํ†ตํ•ด ์ˆซ์ž๋ฅผ ์–ป๋Š”๋‹ค. 

 

 ์˜ˆ์ œ ์ฝ”๋“œ๋กœ ์ดํ•ด

public class CharToNumberExample {
   public static void main(String[] args) {
      char c = '5'; //๋ฌธ์ž'5'
      int numericValue = c - '0'; //'5'์˜ ์•„์Šคํ‚ค ๊ฐ’(53)์—์„œ '0'์˜ ์•„์Šคํ‚ค ๊ฐ’(48)์„ ๋บŒ
      System.out.println("Numberic Value: " + numericValue);
   }
}

 

3. ์ฝ”๋“œ ๊ฐ„๊ฒฐํ™”

๋ฐ˜๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์„ ํ™œ์šฉํ•˜๋˜, ๋กœ์ง์„ ๊ฐ„๋‹จํžˆ ํ•˜์—ฌ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.


Solution ๐Ÿ’ก

public class Solution {
   public int solution(String my_string) {
       int sum = 0;
       
       // ๋ฌธ์ž์—ด์„ ์ˆœํšŒ
       for (int i = 0; i < my_string.length(); i++) {
           char c = my_string.charAt(i); //๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž ๊ฐ€์ ธ์˜ค๊ธฐ
           
           // ๋ฌธ์ž๊ฐ€ ์ˆซ์ž์ธ์ง€ ํ™•์ธ
           if (Character.isDigit(c)) {
               sum += c - '0'; //์ˆซ์ž๋กœ ๋ณ€ํ™˜ ํ›„ ๋ˆ„์  ํ•ฉ
           }
       }
       return sum; // ์ตœ์ข… ํ•ฉ ๋ฐ˜ํ™˜
   }
}

 

๋…ผ๋ฆฌ์  ํ’€์ด ๊ณผ์ •

 

1. ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•œ๋‹ค.

for ๋˜๋Š” for-each ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

2. ๊ฐ ๋ฌธ์ž๊ฐ€ ์ˆซ์ž์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

Character.isDigit(char c) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ˆซ์ž์ธ์ง€ ํŒ๋ณ„ํ•œ๋‹ค. 

 

3. ์ˆซ์ž์ธ ๊ฒฝ์šฐ ํ•ฉ์‚ฐํ•œ๋‹ค. 

์ˆซ์ž์ธ ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ˆ„์  ํ•ฉ์— ๋”ํ•œ๋‹ค.

 

4. ์ตœ์ข… ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 


Reference ๐Ÿ“„

+ Recent posts