๐ ์ฝ๋ฉํ
์คํธ/์๊ณ ๋ฆฌ์ฆ
3. ๋ฌธ์ฅ ์ ๋จ์ด ์ฐพ๊ธฐ - split(), indexOf(), subString()
jhj.sharon
2023. 5. 3. 21:23
๋ฐ์ํ
1. ๋ฌธ์ ์๊ตฌ์ฌํญ
- ํ๊ฐ์ ์์ด ๋ฌธ์ฅ์ด ์ฃผ์ด์ง๋ฉด ๊ทธ ๋ฌธ์ฅ ์ค ๊ฐ์ฅ ๊ธด ๋จ์ด๋ฅผ ์ถ๋ ฅํ๋ค. ๋ฌธ์ฅ ์ ๊ฐ ๋จ์ด๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋๋ค.
- ๋ฌธ์์ด์ ๊ธธ์ด๋ 100์ ๋์ง ์๋๋ค. ๊ฐ์ฅ ๊ธธ์ด๊ฐ ๊ธด ๋จ์ด๊ฐ ์ฌ๋ฌ๊ฐ ์ผ ๊ฒฝ์ฐ ๋ฌธ์ฅ์์ ๊ฐ์ฅ ์์ชฝ์ธ ๋จ์ด๋ฅผ ์ถ๋ ฅํ๋ค.
2. ๋ฌธ์ ํ์ด์ ์ฌ์ฉ๋ ๋ฉ์๋: ๋ฌธ์์ด-> ๋จ์ด ๋ฐฐ์ด
- ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด str์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ๋จ์ด ๋ฐฐ์ด๋ก ์ ์ฅํ๊ธฐ -> String [] s = str.split(" ");
- ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ฌธ์์ด ๋ฐฐ์ด s๋ฅผ ๋๋ฉด์ ํด๋น ๋จ์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ค -> int len=x.length();
- ๋ฐฐ์ด์ ๋๋ฉด์ ์ต๋๊ฐ์ ๋ฝ๋ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ๋ค(์ต๋๊ฐ ๋ฎ์ด์ฐ๊ธฐ) -> if(len>max) max=len;
- ์ต๋๊ฐ์ answer์ ๋ด๋๋ค
2. ๋ฌธ์ ํ์ด(2) : ๋ฌธ์์ด๋ก๋ง ์ฐพ๊ธฐ
- indexOf๋ก ๋ฌธ์์ด์ ๋๋ฉด์ ๋น์นธ์ ์ฐพ๋๋ค. indexOf๋ ์ฐพ๋ ๋ฌธ์์ด์ด ์์ผ๋ฉด -1์ ๋ฐํํ๋ฏ๋ก ๋์ด์ ๊ณต๋ฐฑ์ด ์์ ๋๊ฐ์ง ๋ฌธ์์ด์ ์ญ~ ์ฐพ์๋ณด๊ฒ ๋๋ค.
- ๋์ด์์ ๊ณต๋ฐฑ์ด ์์ด -1์ด ๋ฐํ๋๋ฉด while๋ฌธ์ ์์ฐ์ค๋ฝ๊ฒ ๋ฉ์ถ๋ค.
- subString(0, pos) -> subString์ ๋ฌธ์์ด์ ์๋ผ์ฃผ๋ ๋ฉ์๋์ด๋ค. ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ -1 ์ธ๋ฑ์ค๊น์ง ์๋ผ๋ธ๋ค.
- subString(pos+1) -> pos+1 ๋ถํฐ ๋ฌธ์์ด ๋๊น์ง ์๋ผ๋ด๊ธฐ. ์ด๋ฅผ ํตํด ๋ฐ๋ณต๋ฌธ๋ด String tmp = str.substring(0, pos)๊ฐ ๋ค์ ์ ์ ์ ์ผ๋ก ์๋ํ๋ค.
- ๋จ! (pos=str.indexOf(" ")) !=-1 ์กฐ๊ฑด์ ์ํด ๋ง์ง๋ง ๋จ์ด๋ ๋ค์ ๊ณต๋ฐฑ์ด ์์ผ๋ฏ๋ก ๋จ์ด ๊ธธ์ด์ ์๊ด ์์ด false๊ฐ ๋์ด while๋ฌธ์ด ์ข ๋ฃ๋๋ค.
- ๋ฐ๋ผ์ return์ ์ ๋ง์ง๋ง์ผ๋ก ์ง์ ๋น๊ตํด์ค๋ค. -> if(str.length()>max) answer=str;
3. ํ์ด
import java.util.Scanner;
public class Main {
public String solution(String str) {
String answer ="";
int max = Integer.MIN_VALUE;// ์ ์ ์ต์๊ฐ
String [] s = str.split(" "); // ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์๋ผ์ ๋ฌธ์์ด ๋ฐฐ์ด์ ์ ์ฅ
for(String x : s) {
int len=x.length();
if(len>max) {
max=len;
answer=x;
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(T.solution(str));
}
}
๋ฐ์ํ