๐ 1. ๋ฌธ์ ์ค๋ช

๐ก 2. ํ์ด๊ณผ์
๊ทธ๋ฅ my_string ์ char[] ๋ฐฐ์ด๋ก ๋ฐ๊พธ๊ณ ์ซ์์ธ ๊ฒ๋ง answer์ ๋์ ํด์ ๋ํ๋ฉด ๋๊ฒ ์ง ์๊ฐํ๋ค.
class Solution {
public int solution(String my_string) {
int answer = 0;
for (char c : my_string.toCharArray()) {
if (Character.isDigit(c)) answer += c;
}
return answer;
}
}
์ ์ถํ ์คํ๊ฒฐ๊ณผ๋ ๊ธฐ๋๊ฐ ์ฐจ์ด๊ฐ ๋ง์ด ๋๋ ๊ฑธ๋ก ๋ด์ ์์คํค ์ฝ๋ ๊ฐ์ด ๋ํด์ง ๊ฑฐ ๊ฐ๋ค.

๐จโ๐ป 3. ์ ๋ต์ฝ๋
class Solution {
public int solution(String my_string) {
int answer = 0;
for (char c : my_string.toCharArray()) {
if (Character.isDigit(c)) answer += c - '0';
}
return answer;
}
}
if ๋ฌธ์ผ๋ก Character.isDigit(c)๋ก ๋ฌธ์๊ฐ ์ซ์์ธ์ง ์ฒดํฌ๋ ์ ํ์ง๋ง answer += c์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
c๋ ๋ฌธ์(char) ํ์
์ด๊ธฐ ๋๋ฌธ์, c๋ฅผ ๋ํ๋ฉด ๊ทธ ๋ฌธ์์ ํด๋นํ๋ ์์คํค ๊ฐ์ด ๋ํด์ง๋ค.
์๋ฅผ ๋ค์ด, ๋ฌธ์ '3'์ ์์คํค ๊ฐ์ 51์ด๊ธฐ ๋๋ฌธ์, '3'์ ๋ํ๋ฉด answer์ 51์ด ๋ํด์ง๋ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
๊ทธ๋์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ธฐ๋๊ฐ๋ณด๋ค ์์ฒญ ์ปค์ง๋ค. ์์คํค๊ฐ์ด ์๋๋ผ ์ ์๋ก ๋ณํํ๊ธฐ ์ํด ๋ฌธ์์์ '0'์ ๋นผ๋ฉด ๋๋ค.
`answer += c;`์ `answer += c - '0'`;์ผ๋ก ๋ฐ๊พธ๋๊น ํด๊ฒฐ๋์๋ค.
๐๐ป 4. ์ข์์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ฝ๋
class Solution {
public int solution(String myString) {
return myString.chars().mapToObj(i -> (char) i).filter(Character::isDigit).map(String::valueOf).mapToInt(Integer::valueOf).sum();
}
}
์ด๊ฒ Java์์ String์ ํฌํจ๋ ์ซ์๋ค์ ์ถ์ถํ์ฌ ํฉ์ฐํ๋ ์ฝ๋๋ผ๊ณ ?
๋ด๋ ๋ฌด์จ ์๋ฆฌ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค.
๊ทธ๋์ ์ฐพ์๋ณด๋ ์ค...
1. `myString.chars()`
- myString.chars()๋ String์ IntStream์ผ๋ก ๋ณํํ๋ค.
- chars()๋ String์์ ๊ฐ ๋ฌธ์์ ์์คํค ๊ฐ์ ํฌํจํ๋ ์คํธ๋ฆผ์ ์์ฑํ๋ ์ญํ ์ ํ๋ค. ์๋ฅผ ๋ค์ด์, "a1b2c3"๋ผ๋ ๋ฌธ์์ด์ด ์์ผ๋ฉด, ์ด ๊ณผ์ ์์ ๊ทธ ๊ฒฐ๊ณผ๋ 97, 49, 98, 50, 99, 51๊ณผ ๊ฐ์ ์ซ์ ์คํธ๋ฆผ์ด๋ค. ์ฌ๊ธฐ์ 97์ 'a'์ ์์คํค ๊ฐ์ด๊ณ , 49๋ '1'์ ์์คํค ๊ฐ์ด๋ค.
2. `mapToObj(i -> (char) i)`
- mapToObj(i -> (char) i)๋ IntStream์ Stream<Character>๋ก ๋ณํํ๋ค.
- ๊ฐ ์์คํค ๊ฐ์ char ํ์ ์ผ๋ก ๋ณํํ์ฌ, ์ซ์(์์คํค ์ฝ๋)๋ฅผ ๋ฌธ์๋ก ๋ฐ๊พผ๋ค. ์๋ฅผ ๋ค์ด, ์์คํค ์ฝ๋ 49๋ ๋ฌธ์ '1'๋ก ๋ณํ๋๋ค.
3. `filter(Character::isDigit)`
- filter(Character::isDigit)๋ ๋ฌธ์๊ฐ ์ซ์์ธ์ง ํ์ธํ์ฌ ์ซ์ ๋ฌธ์๋ง ๋จ๊ธด๋ค.
- ์๋ฅผ ๋ค์ด, "a1b2c3"์์ ๋ฌธ์ 'a', 'b', 'c'๋ ์ซ์๊ฐ ์๋๋ฏ๋ก ๊ฑธ๋ฌ์ง๊ณ , ์ซ์์ธ ๋ฌธ์ '1', '2', '3'๋ง ๋จ๋๋ค.
- `Character.isDigit(c)` ์ด๋ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํ๋ ๋ถ๋ถ์ด๋ค.
4. `map(String::valueOf)`
- map(String::valueOf)๋ Character๋ฅผ String์ผ๋ก ๋ณํํ๋ค.
- '1'์ "1"๋ก, '2'๋ "2"๋ก ๋ณํ๋๋ค. ์ด์ ๋ฌธ์ํ ์ซ์๊ฐ Stringํ ์ซ์๋ก ๋ณํ๋๋ค.
5. `mapToInt(Integer::valueOf)`
- mapToInt(Integer::valueOf)๋ String์ Integer๋ก ๋ณํํ์ฌ IntStream์ผ๋ก ๋ง๋ ๋ค.
- ์๋ฅผ ๋ค์ด, "1"์ 1, "2"๋ 2, "3"์ 3์ผ๋ก ๋ณํ๋๋ค.
6. `sum()`์ผ๋ก ์คํธ๋ฆผ์์ ๋ชจ๋ ๊ฐ์ ๋ํ์ฌ ํฉ์ฐํ๋ค.
์ฌ๊ธฐ์๋ 1 + 2 + 3 = 6์ด ๋์ด ์ต์ข
๊ฒฐ๊ณผ๊ฐ 6์ด ๋์จ๋ค.
โ๏ธ ์
๋ ฅ: "a1b2c3"
`myString.chars()` โ 97, 49, 98, 50, 99, 51 (์์คํค ๊ฐ)
`mapToObj(i -> (char) i)` โ a, 1, b, 2, c, 3
`filter(Character::isDigit)` โ 1, 2, 3
`map(String::valueOf)` โ "1", "2", "3"
`mapToInt(Integer::valueOf)` โ 1, 2, 3
`sum()` โ 1 + 2 + 3 = 6 (์ฐ๋ฆฌ๊ฐ ๊ตฌํ๋ ๊ฒฐ๊ณผ๊ฐ)
๐ฆ 5. TMI
์์ด๊ณ ์กธ๋ ค...
๊ทผ๋ฐ ์คํธ๋ฆผ์ผ๋ก ๋๋ฆฌ๋ฉด ์๋๊ฐ ๋๋ ค์ง์ง ์๋
๋์ผ๋ก ๋ณด๊ธฐ์ ์คํธ๋ฆผ์ด ์ฝ๋๋ ์งง์ง๋ง
์ค์ ๋ก ์ฝ๋ฉํ ์คํธ์์๋ ์คํธ๋ฆผ ์ฌ์ฉ์ ํผํด์ผ ํ๋ค
for ๋ฃจํ๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ ์ ์ ์ค๋ฒํค๋๋ก ๊ณ์ฐ๋๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด๋ค.
'Algorithm > JAVAํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์ปจํธ๋กค ์ ํธ ๋ฌธ์ ํ์ด (4) | 2025.03.30 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์์ธ์๋ถํด ๋ฌธ์ ํ์ด (SET) (5) | 2025.03.28 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๋ฌธ์์ด ์ ๋ ฌํ๊ธฐ (1) ๋ฌธ์ ํ์ด (1) | 2025.03.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๋ชจ์ ์ ๊ฑฐ ๋ฌธ์ ํ์ด (5) | 2025.03.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์ต๋๊ฐ ๋ง๋ค๊ธฐ, ํฉํ ๋ฆฌ์ผ ๋ฌธ์ ํ์ด (4) | 2025.03.26 |
๐ 1. ๋ฌธ์ ์ค๋ช

๐ก 2. ํ์ด๊ณผ์
๊ทธ๋ฅ my_string ์ char[] ๋ฐฐ์ด๋ก ๋ฐ๊พธ๊ณ ์ซ์์ธ ๊ฒ๋ง answer์ ๋์ ํด์ ๋ํ๋ฉด ๋๊ฒ ์ง ์๊ฐํ๋ค.
class Solution { public int solution(String my_string) { int answer = 0; for (char c : my_string.toCharArray()) { if (Character.isDigit(c)) answer += c; } return answer; } }
์ ์ถํ ์คํ๊ฒฐ๊ณผ๋ ๊ธฐ๋๊ฐ ์ฐจ์ด๊ฐ ๋ง์ด ๋๋ ๊ฑธ๋ก ๋ด์ ์์คํค ์ฝ๋ ๊ฐ์ด ๋ํด์ง ๊ฑฐ ๊ฐ๋ค.

๐จโ๐ป 3. ์ ๋ต์ฝ๋
class Solution { public int solution(String my_string) { int answer = 0; for (char c : my_string.toCharArray()) { if (Character.isDigit(c)) answer += c - '0'; } return answer; } }
if ๋ฌธ์ผ๋ก Character.isDigit(c)๋ก ๋ฌธ์๊ฐ ์ซ์์ธ์ง ์ฒดํฌ๋ ์ ํ์ง๋ง answer += c์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
c๋ ๋ฌธ์(char) ํ์
์ด๊ธฐ ๋๋ฌธ์, c๋ฅผ ๋ํ๋ฉด ๊ทธ ๋ฌธ์์ ํด๋นํ๋ ์์คํค ๊ฐ์ด ๋ํด์ง๋ค.
์๋ฅผ ๋ค์ด, ๋ฌธ์ '3'์ ์์คํค ๊ฐ์ 51์ด๊ธฐ ๋๋ฌธ์, '3'์ ๋ํ๋ฉด answer์ 51์ด ๋ํด์ง๋ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
๊ทธ๋์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ธฐ๋๊ฐ๋ณด๋ค ์์ฒญ ์ปค์ง๋ค. ์์คํค๊ฐ์ด ์๋๋ผ ์ ์๋ก ๋ณํํ๊ธฐ ์ํด ๋ฌธ์์์ '0'์ ๋นผ๋ฉด ๋๋ค.
answer += c;
์ answer += c - '0'
;์ผ๋ก ๋ฐ๊พธ๋๊น ํด๊ฒฐ๋์๋ค.
๐๐ป 4. ์ข์์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ฝ๋
class Solution { public int solution(String myString) { return myString.chars().mapToObj(i -> (char) i).filter(Character::isDigit).map(String::valueOf).mapToInt(Integer::valueOf).sum(); } }
์ด๊ฒ Java์์ String์ ํฌํจ๋ ์ซ์๋ค์ ์ถ์ถํ์ฌ ํฉ์ฐํ๋ ์ฝ๋๋ผ๊ณ ?
๋ด๋ ๋ฌด์จ ์๋ฆฌ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค.
๊ทธ๋์ ์ฐพ์๋ณด๋ ์ค...
1. myString.chars()
- myString.chars()๋ String์ IntStream์ผ๋ก ๋ณํํ๋ค.
- chars()๋ String์์ ๊ฐ ๋ฌธ์์ ์์คํค ๊ฐ์ ํฌํจํ๋ ์คํธ๋ฆผ์ ์์ฑํ๋ ์ญํ ์ ํ๋ค. ์๋ฅผ ๋ค์ด์, "a1b2c3"๋ผ๋ ๋ฌธ์์ด์ด ์์ผ๋ฉด, ์ด ๊ณผ์ ์์ ๊ทธ ๊ฒฐ๊ณผ๋ 97, 49, 98, 50, 99, 51๊ณผ ๊ฐ์ ์ซ์ ์คํธ๋ฆผ์ด๋ค. ์ฌ๊ธฐ์ 97์ 'a'์ ์์คํค ๊ฐ์ด๊ณ , 49๋ '1'์ ์์คํค ๊ฐ์ด๋ค.
2. mapToObj(i -> (char) i)
- mapToObj(i -> (char) i)๋ IntStream์ Stream<Character>๋ก ๋ณํํ๋ค.
- ๊ฐ ์์คํค ๊ฐ์ char ํ์ ์ผ๋ก ๋ณํํ์ฌ, ์ซ์(์์คํค ์ฝ๋)๋ฅผ ๋ฌธ์๋ก ๋ฐ๊พผ๋ค. ์๋ฅผ ๋ค์ด, ์์คํค ์ฝ๋ 49๋ ๋ฌธ์ '1'๋ก ๋ณํ๋๋ค.
3. filter(Character::isDigit)
- filter(Character::isDigit)๋ ๋ฌธ์๊ฐ ์ซ์์ธ์ง ํ์ธํ์ฌ ์ซ์ ๋ฌธ์๋ง ๋จ๊ธด๋ค.
- ์๋ฅผ ๋ค์ด, "a1b2c3"์์ ๋ฌธ์ 'a', 'b', 'c'๋ ์ซ์๊ฐ ์๋๋ฏ๋ก ๊ฑธ๋ฌ์ง๊ณ , ์ซ์์ธ ๋ฌธ์ '1', '2', '3'๋ง ๋จ๋๋ค.
Character.isDigit(c)
์ด๋ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํ๋ ๋ถ๋ถ์ด๋ค.
4. map(String::valueOf)
- map(String::valueOf)๋ Character๋ฅผ String์ผ๋ก ๋ณํํ๋ค.
- '1'์ "1"๋ก, '2'๋ "2"๋ก ๋ณํ๋๋ค. ์ด์ ๋ฌธ์ํ ์ซ์๊ฐ Stringํ ์ซ์๋ก ๋ณํ๋๋ค.
5. mapToInt(Integer::valueOf)
- mapToInt(Integer::valueOf)๋ String์ Integer๋ก ๋ณํํ์ฌ IntStream์ผ๋ก ๋ง๋ ๋ค.
- ์๋ฅผ ๋ค์ด, "1"์ 1, "2"๋ 2, "3"์ 3์ผ๋ก ๋ณํ๋๋ค.
6. sum()
์ผ๋ก ์คํธ๋ฆผ์์ ๋ชจ๋ ๊ฐ์ ๋ํ์ฌ ํฉ์ฐํ๋ค.
์ฌ๊ธฐ์๋ 1 + 2 + 3 = 6์ด ๋์ด ์ต์ข
๊ฒฐ๊ณผ๊ฐ 6์ด ๋์จ๋ค.
โ๏ธ ์
๋ ฅ: "a1b2c3" myString.chars()
โ 97, 49, 98, 50, 99, 51 (์์คํค ๊ฐ)mapToObj(i -> (char) i)
โ a, 1, b, 2, c, 3filter(Character::isDigit)
โ 1, 2, 3map(String::valueOf)
โ "1", "2", "3"mapToInt(Integer::valueOf)
โ 1, 2, 3sum()
โ 1 + 2 + 3 = 6 (์ฐ๋ฆฌ๊ฐ ๊ตฌํ๋ ๊ฒฐ๊ณผ๊ฐ)
๐ฆ 5. TMI
์์ด๊ณ ์กธ๋ ค...
๊ทผ๋ฐ ์คํธ๋ฆผ์ผ๋ก ๋๋ฆฌ๋ฉด ์๋๊ฐ ๋๋ ค์ง์ง ์๋
๋์ผ๋ก ๋ณด๊ธฐ์ ์คํธ๋ฆผ์ด ์ฝ๋๋ ์งง์ง๋ง
์ค์ ๋ก ์ฝ๋ฉํ ์คํธ์์๋ ์คํธ๋ฆผ ์ฌ์ฉ์ ํผํด์ผ ํ๋ค
for ๋ฃจํ๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ ์ ์ ์ค๋ฒํค๋๋ก ๊ณ์ฐ๋๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด๋ค.
'Algorithm > JAVAํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์ปจํธ๋กค ์ ํธ ๋ฌธ์ ํ์ด (4) | 2025.03.30 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์์ธ์๋ถํด ๋ฌธ์ ํ์ด (SET) (5) | 2025.03.28 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๋ฌธ์์ด ์ ๋ ฌํ๊ธฐ (1) ๋ฌธ์ ํ์ด (1) | 2025.03.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๋ชจ์ ์ ๊ฑฐ ๋ฌธ์ ํ์ด (5) | 2025.03.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์ต๋๊ฐ ๋ง๋ค๊ธฐ, ํฉํ ๋ฆฌ์ผ ๋ฌธ์ ํ์ด (4) | 2025.03.26 |