
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์ ์ ์ฅ์ ํด์ค๋ค.
์ด๋ ๊ฒ ์ฒ๋ฆฌํ๋ฉด ์ ๋ ฅ ๋ฌธ์์ ๊ณต๋ฐฑ ์์น๋ ๊ฐ์๋ฅผ ๊ทธ๋๋ก ์ถ๋ ฅ ๊ฐ์ ์ฎ๊ธธ ์ ์์ ๋ฟ๋๋ฌ, ๋ฌธ์ ์กฐ๊ฑด๋ ๋ชจ๋ ๋ง์กฑ์ํฌ ์ ์๋ค.
๐