n๋ช ์ด ์ฐธ๊ฐํ๋ ๋๋ง์๊ธฐ ๊ฒ์์ ๋ง๋ค์ด๋ณด์. ์ฒ์ ๋จ์ด๋ '๋ผ๋ฉด'์ผ๋ก ์ง์ ๋์ด ์๊ณ , ์ํ๋ ์ฐธ๊ฐ ์ธ์์๋ฅผ ์ ํด ์ด๋ฆ์ ์ ๋ ฅํ ์ ์๋ค. ๊ท์น์ ์ถ๊ฐํ์ฌ, ์๊ฐ์ ์ฌ์ 10์ด๊ฐ ์ง๋๋ฉด ๋จ์ด๋ฅผ ๋ง๊ฒ ์ ๋ ฅํด๋ ํจ๋ฐฐ์ฒ๋ฆฌ๋๋๋ก ๋ง๋ค๋๋ก ํ์.
1. ์ ๋ ฅํ ์ฐธ๊ฐ์ธ์(Player) ์๋งํผ์ value๋ฅผ ๋ฐ์ ์ ์๋ ๋ฐฐ์ด์ด ์์ด์ผ ํ๋ค.
1-1. Player ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ํด๋์ค๋ฅผ ํ์ฉํด์ ์ฐธ๊ฐ์ธ์์(number)๋งํผ์ ๊ฐ์์ Player ๊ฐ์ฒด ๋ฐฐ์ด์ ๋ง๋ ๋ค.
2. ๊ธฐ๋ณธ์ ์ธ ๊ฒ์ ๊ท์น์ ์ ์ฉ์์ผ์ผํ๋ค. ๋จผ์ ๋ง์ด ์ด์ด์ง๋๋ก ์ ๋ ฅ๋๋ ๋จ์ด(new word)์ ์ฒซ ๊ธ์์ ์ ์ ์ ๋ ฅ๋ ๋จ์ด(last word)์ ๋ง์ง๋ง ๊ธ์๊ฐ ๊ฐ์์ง๋ฅผ ํ์ธํด์ผ ํ๋ค.
2-1. string์ ์ฒซ๊ธ์์ ๋ง์ง๋ง๊ธ์๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ substring์ ์ฌ์ฉํ๋ฉด ๋๋ค.
-๋ง์ง๋ง ๋ฌธ์์ ๋ํ ์ธ๋ฑ์ค: lastWord.length()-1
- substring() ํจ์: ์
๋ ฅ๋ฐ์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ์๋ผ ๋ฆฌํดํ๋ ํจ์
-๋ง์ง๋ง ๋ฌธ์: substring(last.length()-1)
-์ฒซ๋ฒ์งธ ๋ฌธ์: substring(0, 1)
2-2. ์ฒซ๊ธ์์ ๋ง์ง๋ง ๊ธ์๊ฐ ๊ฐ์ผ๋ฉด ๊ณ์ ๋ฐ๋ณต๋์ด์ผ ํ๋ฏ๋ก, while๋ฌธ์ ์ฌ์ฉํ๋ค. ์ฒ์ ๋จ์ด๋ ์ ํด์ ธ ์์ผ๋ฏ๋ก, while๋ฌธ ์์ ์ด์ ์ last word = '๋ผ๋ฉด'์ผ๋ก ์ ํ๋ค.
2-3. new word๋ฅผ scanner๋ก ๋ฐ๊ณ , ์ฒซ๊ธ์์ ๋ง์ง๋ง๊ฐ ๊ฐ์ผ๋ฉด(String์ด๋ฏ๋ก equals๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค) continue๋ก while๋ฌธ์ด ๋ฐ๋ณต๋๋๋ก ํ๊ณ , ๋ค๋ฅด๋ฉด break๋ก ํ์ถํ๋ค.
2-4. ๊ธ์๊ฐ ๊ฐ์ผ๋ฉด ๊ฒ์์ด ์ด์ด์ ธ์ผํ๋ฏ๋ก new word์๋ ๋จ์ด๊ฐ last word๊ฐ ๋๊ณ , new word๋ ๋ค์ scanner๋ก ์
๋ ฅ๋ฐ๋๋ค.
3. ์๊ฐ์ ์ฌ์ ๋ช ์ด๋ง์ ๋ต์ ์ ์๋์ง ๋ณด์ฌ์ฃผ๊ณ , ๋ง์ฝ 10์ด๊ฐ ๋์์ผ๋ฉด ํจ๋ฐฐ์ฒ๋ฆฌํ๋ค.
3-1. ์ด๋ฅผ ์ฌ๋ ํจ์๋ currentTimeMillis() ํจ์๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ /1000์ ํด์ผ ์ด ๋จ์๋ก ๋ฐ๋๋ค.
3-2. ๋จ์ด๋ฅผ ์
๋ ฅํ๊ธฐ ์ ๊ณผ ๋จ์ด๋ฅผ ์
๋ ฅํ ์งํ์ currentTimeMillis()๋ฅผ ์ฌ์ฉํด ๋ ์ฐจ๊ฐ ๊ฑธ๋ฆฐ ์๊ฐ์ด๋ค.
3-3. ๊ฑธ๋ฆฐ ์๊ฐ์ด 10์ด๊ฐ ๋์ผ๋ฉด ๋๋ง์ด ์ด์ด์ ธ๋ ํจ๋ฐฐ์ฒ๋ฆฌ ๋๋ฏ๋ก, ๋๋ง์ด ์ด์ด์ง๋์ง ํ์ธํ๊ธฐ ์ ์ ์๊ฐ์ด 10์ด๊ฐ ๋๋์ง ํ์ธํด์ ๋์ผ๋ฉด ๋ฐ๋ก while๋ฌธ์ ํ์ถํ๋ค.
4. ๊ฒ์์ด ์์๋๋ฉด (Player name)>> ์ด ๋ ์ ๋จ์ด๋ฅผ ์ ๋ ฅํ ์ ์์ด์ผ ํ๋ค.
4-1. Player ์ธ์์๋งํผ ๋ฐฐ์ด์ด ์ฐจ๋ก๋ก ์
๋ ฅ๋๊ณ , ๋ฐฐ์ด ๋ง์ง๋ง value๊น์ง ์ถ๋ ฅ๋๋ฉด ๋ค์ 0๋ฒ ์ธ๋ฑ์ค๋ก ๊ฐ์ผ ํ๋ค.
4-2. i๋ฒ์งธ ์ธ๋ฑ์ค value๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ด์ด๋ฆ[i].name์ ์ฌ์ฉํ๋ฉด ๋๋ค.
4-3. 10์ด ์ด๋ด์ด๊ณ ๋๋ง์ด ์ด์ด์ ธ์ while๋ฌธ์ด ๋ฐ๋ณต๋๋ฉด, i++๋ก ๋ค์ value๋ฅผ ๋ถ๋ฌ์ฌ ์ ์๊ฒ ํ๋ค.
4-4. ๋ง์ฝ i๊ฐ number-1๊น์ง ๋์์ผ๋ฉด, ๋ค์ i=0์ผ๋ก ์ค์ ํด์ ๋ฐ๋ณต๋๋๋ก ํ๋ค.
5. ๊ฒ์์ด ์ข ๋ฃ๋๋ฉด ๋๊ฐ ํจ๋ฐฐํ๋์ง ๋ฉ์์ง๋ฅผ ๋์ด๋ค.
5-1. ํจ๋ฐฐํ Player๋ ๋ง์ง๋ง์ ์ถ๋ ฅ๋ Player ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ฏ๋ก i๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด ๋๋ค.
์ ์ฒด์ฝ๋
package com.test.bookexample;
import java.util.Scanner;
class Player {
public String name;
public Player (String name) {
this.name = name;
}
}
public class WordChain {
public static void main(String[] args) {
System.out.println("### ๋๋ง์๊ธฐ ๊ฒ์์ ์์ํฉ๋๋ค! ###");
System.out.println("๊ท์น: ๋์๋ฒ์น ์ ์ฉ ์๋จ, 10์ด ์ด๋ด๋ก ๋ต์ ํด์ผ ํฉ๋๋ค.\n");
System.out.print("๊ฒ์์ ์ฐธ๊ฐํ๋ ์ธ์์ ์ ํด์ฃผ์ธ์ >>");
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
Player[] player = new Player[number];
for (int i=0; i<number; i++) {
System.out.print("์ฐธ๊ฐ์์ ์ด๋ฆ์ ์
๋ ฅํ์ธ์ >>");
String name = scanner.next();
player[i] = new Player(name);
}
/* ๋ฐฐ์ด์ด ์ ๋ค์ด๊ฐ๋์ง ํ์ธ
for (Player value : player)
System.out.println(value.name);
*/
String firstWord = "๋ผ๋ฉด";
System.out.println("์์ํ๋ ๋จ์ด๋ <" + firstWord + ">์
๋๋ค.");
int i = 0;
String lastWord = firstWord;
while (true) {
long startTime = System.currentTimeMillis() / 1000;
System.out.print( player[i].name+ ">>");
String newWord = scanner.next();
long finishTime = System.currentTimeMillis() / 1000;
double time = finishTime - startTime;
if (time > 10) {
System.out.println(time + "์ด(10์ด ์ด์)๊ฐ ์ง๋์ ์๋์ผ๋ก ํจ๋ฐฐ์ฒ๋ฆฌ๋์์ต๋๋ค.");
break;
}
String word1 = newWord.substring(0,1);
String word2 = lastWord.substring(lastWord.length()-1);
//๋๋จ์ด์ ์ฒซ๋จ์ด๊ฐ ์ ์
๋ ฅ๋๋์ง ํ์ธ
//System.out.println(word1 + word2);
if ( word1.equals(word2)) {
System.out.println("(" + time + "์ด๊ฐ ๊ฑธ๋ ธ์ต๋๋ค)");
lastWord = newWord;
i++;
if (i >= number) {
i=0;
}
continue;
} else {break;}
}
System.out.println(player[i].name + "๋์ ํจ๋ฐฐ์
๋๋ค!");
scanner.close();
}
}
console
### ๋๋ง์๊ธฐ ๊ฒ์์ ์์ํฉ๋๋ค! ###
๊ท์น: ๋์๋ฒ์น ์ ์ฉ ์๋จ, 10์ด ์ด๋ด๋ก ๋ต์ ํด์ผ ํฉ๋๋ค.
๊ฒ์์ ์ฐธ๊ฐํ๋ ์ธ์์ ์ ํด์ฃผ์ธ์ >>3
์ฐธ๊ฐ์์ ์ด๋ฆ์ ์
๋ ฅํ์ธ์ >>์ผ๋ฒ๋ง
์ฐธ๊ฐ์์ ์ด๋ฆ์ ์
๋ ฅํ์ธ์ >>์ด๋ฒ๋ง
์ฐธ๊ฐ์์ ์ด๋ฆ์ ์
๋ ฅํ์ธ์ >>์ผ๋ฒ๋ง
์์ํ๋ ๋จ์ด๋ <๋ผ๋ฉด>์
๋๋ค.
์ผ๋ฒ๋ง>>๋ฉด์
(7.0์ด๊ฐ ๊ฑธ๋ ธ์ต๋๋ค)
์ด๋ฒ๋ง>>์๋ฆฌ
(5.0์ด๊ฐ ๊ฑธ๋ ธ์ต๋๋ค)
์ผ๋ฒ๋ง>>๋ฆฌ๋ณธ
(3.0์ด๊ฐ ๊ฑธ๋ ธ์ต๋๋ค)
์ผ๋ฒ๋ง>>๋ณธ๋
(4.0์ด๊ฐ ๊ฑธ๋ ธ์ต๋๋ค)
์ด๋ฒ๋ง>>๋๋ผ๋ง
14.0์ด(10์ด ์ด์)๊ฐ ์ง๋์ ์๋์ผ๋ก ํจ๋ฐฐ์ฒ๋ฆฌ๋์์ต๋๋ค.
์ด๋ฒ๋ง๋์ ํจ๋ฐฐ์
๋๋ค!
๊ฐ์ ํ ์ ์๋ ์ฌํญ
์ด๋ฏธ ํ๋ ๋จ์ด๋ฅผ ๋ ๋งํ๋ฉด ํจ๋ฐฐ๋ก ํ๋จํ๊ฒ ํ๊ธฐ: ์ ๋ ฅ๋ฐ์ ๋จ์ด๋ค์ ArrayList์ ๋ฃ๊ณ , ์ ๋ ฅ๋ฐ์ newWord์ lastWord๋ฅผ ๋น๊ตํ๊ธฐ ์ ์ ArrayList์ value๋ค๊ณผ newWord๊ฐ ๊ฐ์์ง ํ๋จํ๋ค.
'๐ฅ๏ธ > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] JDBC(Java Database Connectivity)๋? ์์ ์ฝ๋๋ก ์๋ ๋ฐฉ๋ฒ ๋ณด๊ธฐ (0) | 2023.04.17 |
---|---|
[Java] ์๋ฐ๋ฅผ ํ๋ค๋ฉด ์์์ผ ํ๋ ์ฉ์ด๋ค (0) | 2023.04.14 |
[Java] final()๊ณผ public static final (0) | 2023.04.09 |
[Java] ์ ๊ทผ์ ํ์์ public static void ๋ป (0) | 2023.04.06 |
[Java] Garbage์ Garbage Collection ์ดํดํ๊ธฐ (0) | 2023.04.06 |