2023. 10. 5. 14:19ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1200
-> ์ด์ ๋ฌธ์ ํ์ด
5. ํน์ ๋ฌธ์ ๋ค์ง๊ธฐ
์ค๋ช
์์ด ์ํ๋ฒณ๊ณผ ํน์๋ฌธ์๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ฉด ์์ด ์ํ๋ฒณ๋ง ๋ค์ง๊ณ ,
ํน์๋ฌธ์๋ ์๊ธฐ ์๋ฆฌ์ ๊ทธ๋๋ก ์๋ ๋ฌธ์์ด์ ๋ง๋ค์ด ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ๋ ฅ
์ฒซ ์ค์ ๊ธธ์ด๊ฐ 100์ ๋์ง ์๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋๋ค.
์ถ๋ ฅ
์ฒซ ์ค์ ์ํ๋ฒณ๋ง ๋ค์งํ ๋ฌธ์์ด์ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ 1
a#b!GE*T@S
์์ ์ถ๋ ฅ 1
S#T!EG*b@a
๋ฌธ์ ํ์ด 1
public String solution(String input)
{
char[] chars = input.toCharArray();
int lt = 0, rt = chars.length-1;
while (lt < rt)
{
if ((chars[lt] >= 'A' && chars[lt] <= 'z') && (chars[rt] >= 'A' && chars[rt] <= 'z')) {
char tmp = chars[lt];
chars[lt] = chars[rt];
chars[rt] = tmp;
lt++;
rt--;
}else if ((chars[lt] >= 'A' && chars[lt] <= 'z') && !(chars[rt] >= 'A' && chars[rt] <= 'z')){
rt --;
}
else if (!(chars[lt] >= 'A' && chars[lt] <= 'z') && (chars[rt] >= 'A' && chars[rt] <= 'z')) {
lt++;
}else {
lt++;
rt--;
}
}
return String.valueOf(chars);
}
๐ฉ๐ป : ํน์ ๋จ์ด ๋ค์ง๋ ์ด๋ฒ ๋ฌธ์ ๋ ์ ๋ฒ ๋ฌธ์ ํ์ด์ ์์ฉ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ ์ ์๋ค.
๋จผ์ lt์ rt ๋ก ์ผ์ชฝ ๋ถํฐ, ์ค๋ฅธ์ชฝ๋ถํฐ ํด์ ์ ์ ๊ฐ์ด๋ฐ๋ก ๋ชจ์ด๋ ์์ง์ด๋ฉด์ ์๋ก์ ๋จ์ด๋ฅผ ๋ฐ๊พธ๋ฉด ๋๋ค.
๊ทผ๋ฐ ์ด์ ์ฌ๊ธฐ์ ํน์ ๋ฌธ์๋ ๊ทธ๋๋ก ๋ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ํน์ ๋ฌธ์๊ฐ ์๋ ์ํ๋ฒณ๋ง ์์ง์ฌ์ฃผ๋ฉด ๋๋ค.
๋ง์ฝ lt๊ฐ ํน์๋ฌธ์๋ผ๋ฉด lt ++ ํด์ฃผ๋ฉด ๋๊ณ , rt ๊ฐ ํน์๋ฌธ์๋ผ๋ฉด rt -- ํด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ๋ค ํน์๋ฌธ์๊ฐ ์๋๋ผ๋ฉด ๊ทธ๋ ๋ ๋ฌธ์๋ฅผ ๊ตํํด์ฃผ๋ฉด ๋๋ค.
ํน์ ๋ฌธ์๊ฐ ์๋์ ํ๋จํ๋๋ฐ ๋น๊ต์์ด ๋๋ฌด ๋๋ฝ๋ค.... ์ ... ๐
๋ฌธ์ ํ์ด 2
public String solution2(String input)
{
char[] chars = input.toCharArray();
int lt = 0, rt = chars.length - 1;
while (lt < rt)
{
if (!Character.isAlphabetic(chars[lt])) lt++;
else if (!Character.isAlphabetic(chars[rt])) rt--;
else {
char tmp = chars[lt];
chars[lt] = chars[rt];
chars[rt] = tmp;
lt++;
rt --;
}
}
return String.valueOf(chars);
}
๐พ : ๋ฌธ์ ํ์ด ๋ฐฉ์์ ๋์ผํ๋ฐ ํจ์ฌ ๊น๋ํด๋ณด์ด๋ ์ด์ ๋ ์กฐ๊ฑด์์ ์ ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ.. ๊ทธ๋ฆฌ๊ณ Character.isAlpahbetic ์ด๋ ๋ฉ์๋๊ฐ ์๋์ง ๋ชฐ๋๋ค..!! ์ด๊ฒ๋ง ์์์ด๋ ๊ฐ๋จํ๊ฒ ํ ์ ์์๋๋ฐ..!!!
Character.isAlpahbetic ์ ํตํด chars[lt]์ ๊ฐ์ด ์ํ๋ฒณ์ด ์๋๋ผ๋ฉด lt์ ์์น๋ฅผ ++1 ํด์ค๋ค.
๋๋ Character.isAlpahbetic์ ํตํด chars[rt]์ ๊ฐ์ด ์ํ๋ฒณ์ด ์๋๋ผ๋ฉด rt์ ์์น๋ฅผ --1 ํด์ค๋ค.
์ด๋ ๊ฒ ์์น๋ฅผ ์ฎ๊ฒผ๋๋ ์ํ๋ฒณ์ด๋ผ๋ฉด ๊ทธ๋ ๋ ๋จ์ด๋ฅผ ๊ตํํด์ฃผ๊ณ , lt ๋ +1, rt๋ -1 ํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฆฌํด ํ์ ์ String์ด๊ธฐ ๋๋ฌธ์ String.valueOf()๋ฅผ ํตํด ๋ฌธ์ ๋ฐฐ์ด์ ๋ฌธ์์ด๋ก ๋ณํํด์ ๋ฆฌํดํด์ค๋ค.