์
์ถ๋ ฅ ์
i | j | k | result |
---|---|---|---|
1 | 13 | 1 | 6 |
10 | 50 | 5 | 5 |
3 | 10 | 2 | 0 |
์
์ถ๋ ฅ ์ ์ค๋ช
package programmers;
public class KNumber {
public static int solution(int i, int j, int k) {
int answer = 0;
String intStr = "";
String convert = Integer.toString(k);
for(int v = i; v <=j; v++) {
intStr +=Integer.toString(v);
}
String[] strArr = intStr.split("");
for(int z = 0; z < strArr.length; z++) {
if(strArr[z].equals(convert)) {
answer++;
}
}
return answer;
}
public static void main(String[] args) {
solution(1,13,1);
}
}
๋์ ์๊ฐ
ํญ์ ํ์ ๊ฐํ ์๊ฐ์ ํ๋๋ฐ ์ด ๋ฌธ์ ์ญ์, ์ซ์๋ก๋ง ์๊ฐํ๊ณ ์ด๋ป๊ฒ ํ๋ณํ ๊ฒ์ธ๊ฐ๋ฅผ ์ค๋ ๊ณ ๋ฏผํ๋ ๋ฌธ์ ์ธ๊ฑฐ ๊ฐ๋ค. ๋ฌธ์ ์ ์ค๋ง๋ฆฌ๋ intํ ๋ณ์๋ฅผ ๋ฌธ์ํ์ผ๋ก ๋ณํํด์ ํน์ ๋ฌธ์๋ฅผ ๊ฒ์ถํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค. ๋๋ for๋ฌธ์ ํตํด, String intStr์ Integer
์ ๋ฌธ์๋ก ๋ณํํ๋ toString
๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ intStr์ ๋ฃ๊ณ intStr์ split("")
๋ฅผ ์ด์ฉํ์ฌ String ๋ฐฐ์ด strArr์ ๋ค์ ๋ฃ๊ณ , ํ๊ธ์ ํ๊ธ์๋ฅผ ํน์ ๋ฌธ์์ ๊ฐ์์ง๋ฅผ ๋น๊ตํ์ฌ ๊ฐ์ผ๋ฉด answer++ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์๋ค.
์
์ถ๋ ฅ ์
array | n | result |
---|---|---|
[3,10,28] | 20 | 28 |
[10,11,12] | 13 | 12 |
์
์ถ๋ ฅ ์ ์ค๋ช
๋์ ํ์ด
package ํ๋ก๊ทธ๋๋จธ์ค;
public class NearestNumber {
public static int solution(int[] array, int n) {
int index = 0;
int[] abs = new int[array.length];
for(int i = 0; i < array.length; i++) {
abs[i] = Math.abs(array[i] - n);
}
int min = abs[0];
for(int i = 1; i < abs.length; i++) {
if(abs[i] < min) {
min = abs[i];
index = i;
}else if(abs[i] == min) {
if(array[i] < array[index]) {
index = i;
}
}
}
return array[index];
}
public static void main(String[] args) {
int[] array = {3,10,28};
solution(array,20);
}
}
๋์ ์๊ฐ
๋ถ๋ช ๋ฌธ์ ๋ฅผ ํ๋ฉด์... ์ด๊ฑฐ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋๊บผ์ผ... ํ๋ฉด์ ์ผ๋จ ์ผ์ด์ค ๋ค ๋๋ฆฌ๊ณ ์ ์ถ ๋ฒํผ ํด๋ฆญ.... ๋ค๋ฅธ ๋ถ๋ค์ด ์ด๋ป๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ ๋ด์ผ์ง ํ๋๋ฐ... ๋ฌด๋ ค 13์ ์ด๋ ํ๋...(?) ๋ญ์ง...??
๋จผ์ , ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ฅผ ์ด๋ป๊ฒ ์ฐพ์๊น ๊ณ ๋ฏผ๋ฅผ ํ๋ค "for๋ฌธ์ ํตํด ๋ฐฐ์ด์ ๋๋ ค ํด๋น ์ธ๋ฑ์ค ๊ฐ๊ณผ ๋งค๊ฐ ๋ณ์ n์ ์ฐจ๋ฅผ ์ ๋๊ฐ์ผ๋ก ๊ตฌํ๋ฉด ์์นํ ์ํฌ์ ์์ง ์์๊น" ๋ผ๋ ์๊ฐ์ ๋จผ์ ํจ....
์ ๋๊ฐ์ผ๋ก ๋จผ์ , ํฌ๊ธฐ๋ฅผ ๊ตฌํ์ฌ, ํฌ๊ธฐ๊ฐ ๊ฐ์ฅ ์์๊ฒ ๋งค๊ฐ๋ณ์ n๊ณผ ๊ฐ์ฅ ๊ฐ๊น๊ฒ ๊ตฌ๋!!! ํ๊ณ ์ ์ถ ๋ฒํผ ํด๋ฆญ... ๊ทธ๋ฌ๋ฉด ๊ทธ๋ ์ง.... ๋ฐ๋ก๋ ๋... ๋์ ๊ณ์ ์กด์ฌํ๋ค....์ฌ๊ธฐ์ ๋ ๊ณ ๋ฏผ ํ๋ ๊ฒฝ์ฐ๋
solution([12, 3, 4, 10, 13], 11)
abs[i] = Math.abs(array[i] - n);
- 12 - 11 = |1| = 1
- 3 - 11 = |-8| = 8
- 4 - 11 = |-7| = 7
- 10 - 11 = |-1| = 1
- 13 - 11 = |2| = 2
1,8,7,1,2
์ซ์ ์ค์ ์ด๋ค ์๊ฐ 11๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ธ๊น??? ์์
12,10 ๋ชจ๋ ์ ๋๊ฐ์ ๊ตฌํ์์๋ ๊ทธ ์ฐจ๊ฐ 1์ด ๋์ค๊ธฐ ๋๋ฌธ์, ์ด ๊ฒฝ์ฐ ๋ฌธ์ ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ ๋ ์์ ์๋ฅผ return
ํฉ๋๋ค. ๋ฅผ ์กฐ๊ฑด์ ๊ฑธ์ด ํ๋ฒ๋ ํ๋ณ์ ํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๊ธฐ๋๋ฌธ์
for(int i = 1; i < abs.length; i++) {
if(abs[i] < min) {
min = abs[i];
index = i;
}else if(abs[i] == min) {
if(array[i] < array[index]) {
index = i;
}
}
}
min
๊ฐ์ 1
์ธ index๋ 0
์ด ๋๋ค, ๋ ๋ฒ์งธ 1์ , index 3
abs[i] == 1
์ฆ, i = 3
์ผ๋ min
๊ฐ๊ณผ ๊ฐ์์ง๋ค.index = 3
์ด ๋ค์ด๊ฐ๋ค.return array[index]
์์ array[3] = 10 ์ ๋ฆฌํดํ๊ฒ ๋๋ค.์
์ถ๋ ฅ ์
emergency | result |
---|---|
[3, 76, 24] | [3, 1, 2] |
[1, 2, 3, 4, 5, 6, 7] | [7, 6, 5, 4, 3, 2, 1] |
[30, 10, 23, 6, 100] | [2, 4, 3, 5, 1] |
์
์ถ๋ ฅ ์ ์ค๋ช
emergency
๊ฐ [3, 76, 24]์ด๋ฏ๋ก ์๊ธ๋์ ํฌ๊ธฐ ์์๋๋ก ๋ฒํธ๋ฅผ ๋งค๊ธด [3, 1, 2]๋ฅผ returnํฉ๋๋ค.emergency
๊ฐ [1, 2, 3, 4, 5, 6, 7]์ด๋ฏ๋ก ์๊ธ๋์ ํฌ๊ธฐ ์์๋๋ก ๋ฒํธ๋ฅผ ๋งค๊ธด [7, 6, 5, 4, 3, 2, 1]๋ฅผ returnํฉ๋๋ค.emergency
๊ฐ [30, 10, 23, 6, 100]์ด๋ฏ๋ก ์๊ธ๋์ ํฌ๊ธฐ ์์๋๋ก ๋ฒํธ๋ฅผ ๋งค๊ธด [2, 4, 3, 5, 1]๋ฅผ returnํฉ๋๋ค.๋์ ํ์ด
package ํ๋ก๊ทธ๋๋จธ์ค;
import java.util.Arrays;
public class Emergency {
public static int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
int[] down = new int[emergency.length];
for(int i = 0; i < emergency.length; i++) {
down[i] = emergency[i];
}
Arrays.sort(down);
for(int i = 0; i < emergency.length; i++) {
for(int j = 0; j < emergency.length;j++) {
if(down[i] == emergency[j]) {
answer[j] = emergency.length-i;
}
}
}
return answer;
}
public static void main(String[] args) {
int[] emergency = {30, 10, 23, 6, 100};
solution(emergency);
}
}
๋์ ์๊ฐ
int[] ๋ฐฐ์ด down
์ ์ด์ฉํ์ฌ emergency
๋ฐฐ์ด์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ์ ํจ, Arrays.sort(down)
์ ์ฐ๋ฉด ์ ๋ ฌ์ด ๋๋ค.
for(int i = 0; i < emergency.length; i++) {
down[i] = emergency[i];
}
Arrays.sort(down);
emergency
๋ฐฐ์ด์ ์ํํ๋ฉด์ ๊ฐ ์์์ ๋ํด ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ down
๋ฐฐ์ด์์์ index๋ฅผ ์ฐพ์ answer
๋ฐฐ์ด์ ํด๋น index ์์น์ ์ ์ฅ, ์ด๋ emergency
๋ฐฐ์ด๊ณผ down
๋ฐฐ์ด์ ๊ฐ์ ๋น๊ตํ์ฌ index๋ฅผ ์ฐพ์
for(int i = 0; i < emergency.length; i++) {
for(int j = 0; j < emergency.length;j++) {
if(down[i] == emergency[j]) {
answer[j] = emergency.length-i;
}
}
}
์ด ๋ฌธ์ ์์ ๊ฐ์ฅ ๋ง์ ๊ณ ๋ฏผ์ ํ๋ ๋ถ๋ถ์ธ๋ฐ, ์ ๋ ฌ๊น์ง์ผ ์ฝ๊ฒ ํ์ง๋ง, ์ฐ์ ์์๋ฅผ ์ด๋ป๊ฒ ๋ํ๋ด๊ณ , ์ฐ์ ์์๋๋ก ์ถ๋ ฅ์ด ์๋, ์๋ ๋ฐฐ์ด์ ์์น์ ์ฐ์ ์์๋ฅผ ๋ฃ์๊ฒ์ธ๊ฐ๋ฅผ ๊ณ ๋ฏผ ๋ง์ด ํ๋๊ฑฐ ๊ฐ๋ค. ํด๊ฒฐ์ ์ํด Map
์๋ค๊ฐ key
์ value
ํํ๋ก ๋ฃ์ด์ผ ๊ฒ ๋ค ๊น์ง ์ ๊ทผ ํ์ผ๋, ๋๋ฌด์ง ๋ฐฉ๋ฒ์ด ๋ ์ค๋ฅด์ง ์์ ์ด์ค for๋ฌธ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค.
๋ด๊ฐ ํ๊ณ ์ ํ๋ ๋ฐฉ๋ฒ
import java.util.*;
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
int[] sort = Arrays.copyOf(emergency, emergency.length);
Arrays.sort(sort);
Map<Integer, Integer> rank = new HashMap<Integer, Integer>();
int rankIdx = 1;
for (int idx = sort.length - 1; idx >= 0; idx--) {
rank.put(sort[idx], rankIdx++);
}
for (int idx = 0; idx < emergency.length; idx++) {
answer[idx] = rank.get(emergency[idx]);
}
return answer;
}
}
int[] answer = new int[emergency.length];
int[] sort = Arrays.copyOf(emergency, emergency.length);
- ์๋์ ๋ฐฐ์ด์ ์์ ํ์ง ์๋ ๋ฐฉ๋ฒ์ผ๋ก, sort ๋ฐฐ์ด์ ์ ์ธํ์ฌ,
Arrays.copyOf()
๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ, ๋ณต์ฌํ ํจ์์, ๋ณต์ฌํ ํจ์์ ํฌ๊ธฐ๋ฅผ ์ค์ ํ๋ค.
Map<Integer, Integer> rank = new HashMap<Integer, Integer>();
int rankIdx = 1;
for (int idx = sort.length - 1; idx >= 0; idx--) {
rank.put(sort[idx], rankIdx++);
}
- Map ์๋ฃํ
Integer
๋ก ์ ์ธํ๋ค.- ์ฐ์ ์์์
index
์ ์ด๊ธฐ๊ฐ์1
๋ก ์ ์ธ- for๋ฌธ sort ๋ฐฐ์ด์ ๋์๋ฆฌ
sort.length-1
๋ถํฐ 0๊น์ง index๋ฅผ ๊ฐ์- Map
rank
๋ณ์์put
์key
,value
๊ฐ์ ๊ฐ๊ฐ๋ฐฐ์ด์ ์์(sort[idx])
,rankIdx++
๊ฐ์ ๋ฃ๋๋ค.
-> ์ฆ, ์ค๋ฆ์ฐจ์์ ๋งจ๋ง์ง๋ง ๊ฐ์ดrankIdx = 1
์ ์ป๋๋ค.
for (int idx = 0; idx < emergency.length; idx++) {
answer[idx] = rank.get(emergency[idx]);
}
return answer;
- ์ต์ข ์ ์ผ๋ก, for๋ฌธ์ ํตํด
answer[idx]
๊ฐ์rank.get(emergency[idx])
๋ฅผ ๋ฃ๋๋ค.
์์๋ฅผ ๋ฃ์ด ๋ณด์
emergency
๋ฐฐ์ด์{30, 10, 23, 6, 100}
sort
๋ฐฐ์ด์emergency
๋ฐฐ์ด์ ๋ณต์ฌ๋ณธ์ด๋ฏ๋ก{30, 10, 23, 6, 100}
Arrays.sort(sort)
๋ฅผ ์คํํ๋ฉด, ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก{6,10,23,30,100}
- ์ญ์ for ๋ฃจํ๋ฅผ ์ฌ์ฉ
sort
๋ฐฐ์ด์ ์์์ ์์๋ฅผrank
๋งต์ ์ ์ฅ
rank
๋งต์ ์ ์ฅ๋๋ ์์ :{100: 1, 30: 2, 23: 3, 10: 4, 6: 5}
emergency
๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํ ์์๋ฅผ ๊ตฌํ๊ธฐ ์ํด for ๋ฃจํ๋ฅผ ์ฌ์ฉํ์ฌanswer
๋ฐฐ์ด์ ์์๋ฅผ ์ ์ฅ
- answer[0] = rank.get(30) = 2
- answer[1] = rank.get(10) = 4
- answer[2] = rank.get(23) = 3
- answer[3] = rank.get(6) = 5
- answer[4] = rank.get(100) = 1
- ์ต์ข ์ ์ผ๋ก
answer
๋ฐฐ์ด์{2, 4, 3, 5, 1}
์ด ๋๋ค.
์ ํ์ฌํญ
์
์ถ๋ ฅ ์
my_string | result |
---|---|
"aAb1B2cC34oOp" | 37 |
"1a2b3c4d123Z" | 133 |
์
์ถ๋ ฅ ์ ์ค๋ช
๋์ ํ์ด
package ํ๋ก๊ทธ๋๋จธ์ค;
public class HiddenNumbers {
public static int solution(String my_string) {
int answer = 0;
my_string = my_string.replaceAll("[^\\d]+", " ");
String[] str = my_string.split(" ");
for (int i = 0; i < str.length; i++) {
if (!str[i].isEmpty()) { // ๋น ๋ฌธ์์ด์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ซ์๋ก ๋ณํ
int num = Integer.parseInt(str[i]);
answer += num;
}
}
return answer;
}
public static void main(String[] args) {
solution("aAb1B2cC34oOp");
}
}
๋์ ์๊ฐ
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ, ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๊ฒ ์ง๋ง, ํ์ฌ ๋์ ์์ค์์ ์๊ฐ๋ฌ๋ ๋ฐฉ๋ฒ์ ์์
์ค ํค๋ณด๋ ์
๋ ฅ์์ ๋น๊ฐ์ด๋, ํน์ ๊ฐ์ ๋ฃ์์๋ ๊ฒ์ถ๋๋ ๋ฉ์์ง ์ถ๋ ฅํ๊ธฐ๋ฅผ ํ๋ฉด์ ๋ฐฐ์ ๋ ์ ๊ทํํ์์ด ์๊ฐ๋ฌ๋ค. ์ด๋ ดํ์ด ์๊ฐ๋ฌ๊ธฐ์ ๋น์ทํ ์์ ๋ฅผ ๋จผ์ ์ฐพ์๋ณด๊ณ ๋ฌธ์ ๋ฅผ ํ์๋๋ฐ, ์ซ์๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ฌธ์๋ฅผ ๊ฒ์ถํ๋ ๋ฐฉ๋ฒ [^\\d]+
์ ๋,์๋ฌธ์๋ง ๊ฒ์ถํ๋ ๋ฐฉ๋ฒ [a-zA-Z]
์ ๊ทํํ์์ด ์๋ค๋๊ฒ์ ๋ณด๊ณ ๋จผ์ [^\\d]+
๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์๋ค. my_string์ replaceAll
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ [^\\d]+
๋ฅผ " "
์ผ๋ก ๋ฐ๊พธ์ด, String[] ๋ฐฐ์ด str์ ๋์ด์ฐ๊ธฐ๊ฐ ์กด์ฌํ๋ ๋ฌธ์๋ฅผ ๋ฃ๋๋ค. ๊ทธ๋ฆฌ๊ณ for๋ฌธ์ ๋๋ ค str[i].isEmpty()
์ฆ, ๋น ๋ฌธ์์ด์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ซ์๋ก ๋ณํํ์ฌ, intํ answer๋ณ์์ ๋ํด์ค๋ค.
์ ๊ทํํ์
ํจํด | ์ค๋ช | ํจํด | ์ค๋ช |
---|---|---|---|
^ | ์์์ ๋ํ๋ด๋ ํจํด | . | ์ด๋ค ํ ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ํจํด |
$ | ๋์ ๋ํ๋ด๋ ํจํด | \d | ์ซ์๋ฅผ ๋ํ๋ด๋ ํจํด (digit) |
\D | ์ซ์ ์ด์ธ์ ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ํจํด | \w | ์ซ์์ ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ํจํด (word) |
\W | ์ซ์์ ๋ฌธ์ ์ด์ธ์ ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ํจํด | \s | ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ํจํด (space) |
[abc] | a, b, c ์ค ํ๋๋ฅผ ๋ํ๋ด๋ ํจํด | \S | ๊ณต๋ฐฑ ๋ฌธ์ ์ด์ธ์ ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ํจํด |
[^abc] | a, b, c ์ด์ธ์ ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ํจํด | [a-z] | a๋ถํฐ z๊น์ง์ ์ํ๋ฒณ ์ค ํ๋๋ฅผ ๋ํ๋ด๋ ํจํด |
[0-9] | 0๋ถํฐ 9๊น์ง์ ์ซ์ ์ค ํ๋๋ฅผ ๋ํ๋ด๋ ํจํด | | | or ์ฐ์ฐ์๋ฅผ ๋ํ๋ด๋ ํจํด |
() | ๊ทธ๋ฃน์ ๋ํ๋ด๋ ํจํด |
๋ค๋ฅธ ํ์ด ๋ฒ
- ์๋ฐ ์ ๊ท ํํ์์ ์ด์ฉํ ํ์ด๋ฒ
package ํ๋ก๊ทธ๋๋จธ์ค;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HiddenNumbers {
public static int solution(String my_string) {
int answer = 0;
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(my_string);
while (matcher.find()) { // ์ซ์๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ๋ฐ๋ณต
int num = Integer.parseInt(matcher.group());
answer += num;
}
System.out.println(answer);
return answer;
}
public static void main(String[] args) {
solution("aAb1B2cC34oOp");
}
}
์ฌํ ์ฝ๋
class Solution {
public int solution(String my_string) {
int answer = 0;
String[] str = my_string.split("[a-zA-Z]");
for(int i = 0 ; i < str.length;i++){
if(str[i].length() > 0)
answer+=Integer.parseInt(str[i]);
}
return answer;
}
}
์ฝ๋ ํด์
- ๋,์๋ฌธ์๋ฅผ ๊ฒ์ถํ๋ ์ ๊ท์
[a-zA-Z]
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ก String[] str์ ๋ฃ๋๋ค.- ๋ฐ๋ณต๋ฌธ์ ํตํด,
str[i].length() > 0
๋น๊ฐ์ด๋ฉด ๋์ด๊ฐ๊ณ , ๊ฐ์ด ์กด์ฌํ๋ฉด,answer += Integer.parseInt(str[i])
๋ฅผ ์ฌ์ฉํ์ฌ ์์ฃผ ์ฌํํ๊ฒ ๊ณ์ฐ
์
์ถ๋ ฅ ์
S | result |
---|---|
"abcabcadc" | "d" |
"abdc" | "abcd" |
"hello" | "eho" |
์
์ถ๋ ฅ ์ ์ค๋ช
๋์ ํ์ด
package ํ๋ก๊ทธ๋๋จธ์ค;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
public class AppearOnlyOnce {
public static String solution(String s) {
String answer = "";
Set<String> dupliSet = new LinkedHashSet<>();
Set<String> nonDupliSet = new LinkedHashSet<>();
for(int i = 0; i < s.length(); i++) {
String c = Character.toString(s.charAt(i));
if(nonDupliSet.contains(c)) {
dupliSet.add(c);
}else {
nonDupliSet.add(c);
}
}
nonDupliSet.removeAll(dupliSet);
System.out.println("์ค๋ณต๊ฐ: " + dupliSet);
System.out.println("์ค๋ณต์๋ ๊ฐ: "+ nonDupliSet);
String[] newStr = new String[nonDupliSet.size()];
newStr = nonDupliSet.toArray(newStr);
Arrays.sort(newStr);
for(String str : newStr) {
answer += str;
}
return answer;
}
public static void main(String[] args) {
solution("hello");
}
}
๋์ ์๊ฐ
์ค๋ณต์ ๊ฑฐ
ํ๋ฉด SET ํด๋์ค ๋ฐ์ ์๊ฐ์ด ๋์ง์์๊ธฐ ๋๋ฌธ์ ์ผ๋จ, Set
ํด๋์ค๋ฅผ ํ์ฉํด์ ๋ฌธ์ ์ ์ ๊ทผํ์๋ค. ๋งค๊ฐ๋ณ์ String s
์ ์ค๋ณต ๋ฌธ์, ์ค๋ณต๋์ง ์๋ ๋ฌธ์๋ฅผ ๊ฐ๊ฐ dupliSet
, nonDupliSet
๊ฐ์ฒด์ ์ ์ฅํ๊ธฐ ์ํด Set
ํด๋์ค๋ฅผ ์ฌ์ฉ, String s
๋ฅผ ํ๊ธ์์ฉ String c
์ ๋ฃ์ด nonDupliSet
์ c
๋ฌธ์๊ฐ ํฌํจ๋ผ ์์ผ๋ฉด dupliSet
์ c๋ฅผ ํ๋์ฉ add
์ํจ๋ค. ๊ทธ๋ ์ง์์ผ๋ฉด, nonDupliSet
์ ํ ๊ธ์์ฉ ๋ฃ๋๋ฐ, ์ต์ด ์คํ ์์๋ nonDupliSet
์ด ๋น์ด ์๊ธฐ๋๋ฌธ์ else๋ฌธ์ด ๋์ํ๋ค.
// solution("hello"); else { nonDupliSet.add(c); } System.out.println("์ค๋ณต๊ฐ: " + dupliSet); System.out.println("์ค๋ณต์๋ ๊ฐ: "+ nonDupliSet); nonDupliSet.removeAll(dupliSet); System.out.println("์ค๋ณต์์ ์ ๊ฑฐ ๊ฐ: "+ nonDupliSet);
๋งค๊ฐ๋ณ์ "hello" ์์ ์ค๋ณต๊ฐ์ l
์ด๋ฉฐ, ์ต์ด ํ๋ฒ์ I
๊ฐ์ ํฌํจํ ๋ฌธ์๋ฅผ ๋์ดํ๋ฉด, [h,e,l,o]
์ด๊ณ , ์ค๋ณต๋ ๋ฌธ์๋ฅผ ์์ ์ ๊ฑฐ (removeAll ๋ฉ์๋)
๋ฅผ ํตํด ์ค๋ณต ์์ ์ ๊ฑฐ ๊ฐ์ : [h,e,o]
๊ฐ ๋๋ค.
String[] newStr = new String[nonDupliSet.size()];
newStr = nonDupliSet.toArray(newStr);
Arrays.sort(newStr);
for(String str : newStr) {
answer += str;
}
๋ฌธ์ ์์๋ ์ค๋ณต ์ ๊ฑฐ ๊ฐ์์ ์ํ๋ฒณ ์์๋ก ์ ๋ ฌํ๋ผ๊ณ ํ๊ธฐ๋๋ฌธ์, ์ด๋ฅผ String ๋ฐฐ์ด newStr
์ ์ ์ธํ๊ณ ,nonDupliSet
์ toArray
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ณํํ ๋ค์ sort
ํ newStr์ ๋ฐ๋ณต์ ๋๋ ค answer์ ์ถ๊ฐํ๋ฉด ๋๋ค.
LEVEl 0 ๋ฌธ์ ๊ฐ ์ด๋ ๊ฒ ์ด๋ ต๋ค๋ ... OTL
๋ถํ์ํ ๋ถ๋ถ ๋ฆฌํํ ๋ง
package ํ๋ก๊ทธ๋๋จธ์ค;
import java.util.LinkedHashSet;
import java.util.Set;
public class AppearOnlyOnce {
public static String solution(String s) {
StringBuilder answer = new StringBuilder();
Set<Character> dupliSet = new LinkedHashSet<>();
Set<Character> nonDupliSet = new LinkedHashSet<>();
for (char c : s.toCharArray()) {
if (nonDupliSet.contains(c)) {
dupliSet.add(c);
} else {
nonDupliSet.add(c);
}
}
nonDupliSet.removeAll(dupliSet);
for (char c : nonDupliSet) {
answer.append(c);
}
return answer.toString();
}
public static void main(String[] args) {
System.out.println(solution("aaaab"));
}
}
๋ฆฌํํ ๋ง ์ | ๋ฆฌํํ ๋ง ํ |
---|---|
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
- Stringํ์ answer์
StringBuilder
ํ์ answer๋ก ์ ์ธํ๊ณ , Set ํด๋์ค์ ํ์ ์String
->Character
ํ์ผ๋ก ๋ณ๊ฒฝfor(int i = 0; i < s.length(); i++ { String c = Character.toString(s.charAt(i)); }
๋ฅผ ์ฌ์ฉํ๋ ๋์
for(char c : nonDupliSet) { answer.append(c); }
๋ฅผ ์ฌ์ฉํ์ฌ, ํฅ์๋
for
๋ฌธ์ผ๋ก ๋ฐ๋ณต์ ๋๋ ค,StringBuilder
ํ์ ์ answer์ ๋ฐ๋ก ๊ฐ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉ