JadenCase๋ ๋ชจ๋ ๋จ์ด์ ์ฒซ ๋ฌธ์๊ฐ ๋๋ฌธ์์ด๊ณ , ๊ทธ ์ธ์ ์ํ๋ฒณ์ ์๋ฌธ์์ธ ๋ฌธ์์ด์
๋๋ค. ๋จ, ์ฒซ ๋ฌธ์๊ฐ ์ํ๋ฒณ์ด ์๋ ๋์๋ ์ด์ด์ง๋ ์ํ๋ฒณ์ ์๋ฌธ์๋ก ์ฐ๋ฉด ๋ฉ๋๋ค. (์ฒซ ๋ฒ์งธ ์
์ถ๋ ฅ ์ ์ฐธ๊ณ )
๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ก์ ๋, s๋ฅผ JadenCase๋ก ๋ฐ๊พผ ๋ฌธ์์ด์ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํด์ฃผ์ธ์.
s | return |
---|---|
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
import java.util.*;
class Solution {
public StringBuilder solution(String s) {
StringBuilder modifiedString = new StringBuilder();
String[] tmp = s.split(" ");
for (int j = 0; j < tmp.length; j++) {
char first = tmp[j].charAt(0);
if (Character.isDigit(first) || Character.isUpperCase(first)){
modifiedString.append(first);
}
else {
modifiedString.append(Character.toUpperCase(first));
}
for (int i = 1; i < tmp[j].length(); i++) {
modifiedString.append(Character.toLowerCase(tmp[j].charAt(i)));
}
modifiedString.append(" ");
}
modifiedString.deleteCharAt(modifiedString.length() - 1);
return modifiedString;
}
}
์ผ๋จ, ๋จ์ด์ ์ฒซ ๋ฒ์งธ ๊ธ์์ ๋ํ ๊ฒฝ์ฐ๋ฅผ ๋๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด์ ๋๋์ด ๋ฐฐ์ด์ ๋ด์์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋์ split()
ํจ์๋ฅผ ์ฌ์ฉํด์ ๋ฌธ์์ด์ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๋ถํ ํด ๋ฐฐ์ด์ ๋ด์๊ณ , 0๋ฒ์งธ ์ธ๋ฑ์ค๊ฐ ์ซ์์ธ ๊ฒฝ์ฐ, ๋๋ฌธ์์ธ ๊ฒฝ์ฐ, ์๋ฌธ์์ธ ๊ฒฝ์ฐ๋ก ๋๋์๋ค.
์ซ์๋ ๋๋ฌธ์์ธ ๊ฒฝ์ฐ์๋ ๋ฐ๋ก ๋ณํํด ์ค ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์, ๊ทธ๋๋ก modifiedString
์ ๋ด์์ฃผ์๊ณ , ์๋ฌธ์์ธ ๊ฒฝ์ฐ์๋ toLowerCase()
ํจ์๋ฅผ ์ด์ฉํด ๋๋ฌธ์๋ก ๋ณํ์์ผ ์ค ํ modifiedString
์ append๋ฅผ ํด์ฃผ์๋ค.
๊ทธ๋ฌ๋๋ ๊ฑฐ์ ๋ชจ๋ ํ
์คํธ ์ผ์ด์ค๊ฐ ์คํจํ์๊ณ ,
์์ธ์ ์ฐพ์๋ณด๋ ๋ฌธ์ ์ ๋ ฅ ์กฐ๊ฑด ์ค ๊ณต๋ฐฑ ๋ฌธ์๊ฐ ์ฌ๋ฌ ๊ฐ ํฌํจ๋ ์ ์๋ค๋ ์ ์ ๊ณ ๋ คํ์ง ๋ชปํ๋ค๋ ๊ฑธ ์์๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋ชจ์ํ๋ค๊ฐ ์๊ฐ ์ด๊ณผ๋ก ๊ฒฐ๊ตญ GPT์ ํ์ ๋น๋ ค ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ๊ฒ ๋์๋ค๐ญ
class Solution {
public StringBuilder solution(String s) {
StringBuilder modifiedString = new StringBuilder();
// ์
๋ ฅ ๋ฌธ์์ด์ด ๋น์ด ์๋์ง ํ์ธ
if (s == null || s.isEmpty()) {
return modifiedString; // ๋น ๋ฌธ์์ด์ผ ๊ฒฝ์ฐ ๋น StringBuilder ๋ฐํ
}
boolean isPreviousSpace = true; // ์ด์ ๋ฌธ์๊ฐ ๊ณต๋ฐฑ์ธ์ง ์ฌ๋ถ
for (char c : s.toCharArray()) {
if (Character.isWhitespace(c)) {
modifiedString.append(c); // ๊ณต๋ฐฑ์ ๊ทธ๋๋ก ์ถ๊ฐ
isPreviousSpace = true; // ํ์ฌ ๋ฌธ์๊ฐ ๊ณต๋ฐฑ์์ ๊ธฐ๋ก
} else {
if (isPreviousSpace) {
// ์ด์ ๋ฌธ์๊ฐ ๊ณต๋ฐฑ์ผ ๊ฒฝ์ฐ, ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ๋ณํ
modifiedString.append(Character.toUpperCase(c));
} else {
// ์ฒซ ๊ธ์๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ฌธ์๋ก ๋ณํ
modifiedString.append(Character.toLowerCase(c));
}
isPreviousSpace = false; // ํ์ฌ ๋ฌธ์๊ฐ ๊ณต๋ฐฑ์ด ์๋์ ๊ธฐ๋ก
}
}
return modifiedString;
}
}
์ด ๋ฐฉ๋ฒ์ ์ฒ์์ ๋ฑ ๋ณด๊ณ ๋จ์ด์ ๋งจ ์๊ธ์๋ฅผ ์ด๋ ๊ฒ๋ ์ถ์ถํ ์ ์๊ตฌ๋..์ถ์ ์๊ฐ์ด ๋ฆ๊ณผ ๋์์ ๋์ ์ด ์ข์ ์์ผ์ ๋ํ ํํ๊ฐ ์ด์ง ์๋ค.
๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค. ์ฐ์ ์ ๋ ฅ ๋ฌธ์์ด์ด ๋ชจ๋ ๊ณต๋ฐฑ์ด๊ฑฐ๋ ๋น์ด ์๋ ์ง ํ์ธ์ ํด์ค๋ค.
์ด์ ํ์ฌ ๋ฌธ์๊ฐ ๋จ์ด์ ๋งจ ์๊ธ์์ธ์ง ํ๋จ์ ํด์ค์ผ ํ๋๋ฐ,
์ฌ๊ธฐ์ ์ด์ ๋ฌธ์๊ฐ ๊ณต๋ฐฑ์ธ์ง ์ฌ๋ถ๋ฅผ ์ ์ฅํ๋ boolean ๋ณ์๋ฅผ ํ๋ ์ ์ธํด ์ค๋ค.
์๋ํ๋ฉด, ์ด์ ๋ฌธ์๊ฐ ๊ณต๋ฐฑ์ด๋ฉด ํ์ฌ ๋ฌธ์๋ ๋ฌด์กฐ๊ฑด ๋จ์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฌ๋ฉด์ ํ์ฌ ๋ฌธ์๊ฐ isWhitespace
์ฆ, ๊ณต๋ฐฑ์ด๋ผ๋ฉด, ๊ทธ ๊ณต๋ฐฑ์ ๊ทธ๋๋ก ์ต์ข
๋ฌธ์์ด modifiedString
์ ์ ์ฅํด์ฃผ๊ณ , ํ์ฌ ๋ฌธ์๊ฐ ๊ณต๋ฐฑ์์ ๊ธฐ๋กํด ์ค๋ค.
๋ง์ฝ, ๊ณต๋ฐฑ์ด ์๋๋ผ๋ฉด, ํ์ฌ ์ด ๋ฌธ์ c
๋ ๋จ์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด๊ฑฐ๋, ๊ทธ ๋ค์ ๋ฌธ์์ผ ๊ฒ์ด๋ค.
์ด ๋๊ฐ์ง์ ๊ฒฝ์ฐ๋ ์ด์ ๋ฌธ์๊ฐ ๊ณต๋ฐฑ์ธ์ง ์๋์ง์ ์ฌ๋ถ์ ๋ฐ๋ผ ๊ฐ๋ฆฐ๋ค.
์ฆ, isPreviousSpace
๊ฐ True์ธ ๊ฒฝ์ฐ์๋ c
๊ฐ ๋จ์ด์ ๋งจ ์ ๋ฌธ์๋ผ๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ ๋๋ฌธ์๋ก ๋ณํํด์ modifiedString
์ ์ ์ฅ์ ํด ์ฃผ๊ณ ,
isPreviousSpace
๊ฐ False์ธ ๊ฒฝ์ฐ์๋ c
๊ฐ ๋จ์ด์ ๋งจ ์ ๋ฌธ์๋ ์๋๊ณ , ๊ทธ ๋ค ์ด๋๊ฐ์ ๋ฌธ์๋ผ๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ ์๋ฌธ์๋ก ๋ณํํด์ modifiedString
์ ์ ์ฅ์ ํด์ค๋ค.
์ด๋ ๊ฒ ์ฒ๋ฆฌํ๋ฉด ์ ๋ ฅ ๋ฌธ์์ ๊ณต๋ฐฑ ์์น๋ ๊ฐ์๋ฅผ ๊ทธ๋๋ก ์ถ๋ ฅ ๊ฐ์ ์ฎ๊ธธ ์ ์์ ๋ฟ๋๋ฌ, ๋ฌธ์ ์กฐ๊ฑด๋ ๋ชจ๋ ๋ง์กฑ์ํฌ ์ ์๋ค.
๐