Notice
Recent Posts
Recent Comments
Link
| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- ์ฝ๋ฉํ ์คํธ
- ์ฝํ ์๋ฐ
- kotlin
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- BottomNavigation
- javaCoding
- baekjoon
- ์๋ฐ
- ์ฝํ
- ๋ทฐ๋ฐ์ธ๋ฉ
- JavaCodingTest
- ์ฝ๋ฉํ ์คํธ ์๋ฐ
- Coding-Test
- ๋ฐฑ์ค
- ModelViewPresenter
- Java
- pattern
- ์๋๋ก์ด๋
- ํ๋ฉด ํฌ๊ธฐ ๊ตฌํ๊ธฐ
- ์ค๋ธ์
- viewpager2
- ์ฝํ๋ฆฐ
- ์๋ฐ ์ฝ๋ฉํ ์คํธ
- Android
- ์ฝ๋ฉํ ์คํธ JAVA
- ์ฐํ ํ๊ธ๋ฐ
- ScreenSize
- CodingTest
- programmers
- CodingTestJava
Archives
- Today
- Total
KDLiam
[Programmers ์ฝ๋ฉ ๊ธฐ์ด ํธ๋ ์ด๋ : Java] ์ฝ๋ ์ฒ๋ฆฌํ๊ธฐ ๋ณธ๋ฌธ
Problems(Java)/Programmers
[Programmers ์ฝ๋ฉ ๊ธฐ์ด ํธ๋ ์ด๋ : Java] ์ฝ๋ ์ฒ๋ฆฌํ๊ธฐ
KDLiam 2025. 10. 10. 14:49๐ฃ ๋ชจ๋ ํ ๊ธ๋ก ๋ฌธ์ ์ถ์ถํ๊ธฐ (ํ๋ก๊ทธ๋๋จธ์ค 181932๋ฒ)
๐ ๋ฌธ์ ๋งํฌ: https://school.programmers.co.kr/learn/courses/30/lessons/181932
๋ฌธ์ ์์ฝ
๋ฌธ์์ด code๋ฅผ ์์์๋ถํฐ ์ฝ์ผ๋ฉฐ, ๋ฌธ์ '1'์ด ๋์ค๋ฉด mode๋ฅผ ํ ๊ธ(0↔1)ํ๋ค.
- mode๊ฐ 0์ผ ๋๋ **์ง์ ์ธ๋ฑ์ค(0,2,4,...)**์ ๋ฌธ์๋ง ์ถ๋ ฅ
- mode๊ฐ 1์ผ ๋๋ **ํ์ ์ธ๋ฑ์ค(1,3,5,...)**์ ๋ฌธ์๋ง ์ถ๋ ฅ
'1' ์์ฒด๋ ์ถ๋ ฅํ์ง ์๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋น์ด ์์ผ๋ฉด "EMPTY" ๋ฐํ.
๋ด๊ฐ ์ฒ์ ์ง ์ฝ๋ (์๋ณธ)
class Solution {
public String solution(String code) {
StringBuilder answer = new StringBuilder();
int mode = 0;
char c;
for(int i=0;i<code.length();i++) {
c = code.charAt(i);
// mode change
if(c == '1') {
if(mode == 0) { mode = 1; }
else { mode = 0; }
} else { // c != 1
if(i%2==0 && mode==0) {
answer.append(c);
} else if(i%2==1 && mode==1) {
answer.append(c);
}
}
}
return (answer.length()==0 ? "EMPTY" : answer.toString());
}
}
๋ค๋ฅธ ์ฌ๋ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด ๊ฐ๊ฒฐํ๊ฒ ๊ฐ์ ํ ์ฝ๋
class Solution {
public String solution(String code) {
StringBuilder answer = new StringBuilder();
int mode = 0;
for (int i = 0; i < code.length(); i++) {
char c = code.charAt(i);
if (c == '1') {
mode = mode == 0 ? 1 : 0;
continue;
}
if (i % 2 == mode) {
answer.append(c);
}
}
return (answer.length() == 0) ? "EMPTY" : answer.toString();
}
}
ํต์ฌ ํฌ์ธํธ (์ด ์ฝ๋์ ํต์ฌ ๋ ์ค)
- mode = mode == 0 ? 1 : 0;
→ '1'์ ๋ง๋ฌ์ ๋ mode๋ฅผ ํ ๊ธ. (0↔1) - if (i % 2 == mode)
→ ํ์ฌ ์ธ๋ฑ์ค์ ์ง/ํ(i%2) ๊ณผ mode๊ฐ ๊ฐ์ผ๋ฉด ๋ฌธ์๋ฅผ ์ถ๋ ฅ
์ด ๋ ์ค๋ก ๋ฌธ์ ์ ์๊ตฌ์ฌํญ์ ์์ฃผ ๊ฐ๋จํ๊ฒ ํํํ ์ ์์ต๋๋ค.
Boolean์ ์ด์ฉํ ํ์ด
class Solution {
public String solution(String code) {
StringBuilder answer = new StringBuilder();
Boolean mode = false;
for(int i=0;i<code.length();i++) {
char c = code.charAt(i);
if(c=='1') {
mode = !mode;
continue;
}
if(i%2== (mode?1:0)) {
answer.append(c);
}
}
return (answer.length()==0 ? "EMPTY" : answer.toString());
}
}
- ์ฅ์ : boolean์ด ์๋๋ฅผ ๋ ๋ช ํํ ์ ๋ฌํฉ๋๋ค (mode๊ฐ ์ฐธ์ด๋ฉด ํ์ ๋ชจ๋).
- ๊ฐ๋ ์ฑ์ด ๋ ์ข์์ง๊ณ , ์ฝ๋ ์ฌ๋์ด ์๋๋ฅผ ๋ฐ๋ก ํ์ ํ ์ ์์ต๋๋ค.
์๊ฐ·๊ณต๊ฐ ๋ณต์ก๋
- ์๊ฐ ๋ณต์ก๋: O(n) — ๋ฌธ์์ด ๊ธธ์ด๋งํผ ํ ๋ฒ ์ํ
- ๊ณต๊ฐ ๋ณต์ก๋: O(n) (๊ฒฐ๊ณผ ๋ฌธ์์ด ์ ์ฅ์ฉ)
(๋ชจ๋ ์ ๋ ฅ ํฌ๊ธฐ์ ์ ํ์ ์ผ๋ก ๋น๋ก — ๋งค์ฐ ํจ์จ์ )