Bibi's DevLog ๐ค๐
[๋ฐฑ์ค 4493] ๊ฐ์ ๋ฐ์ ๋ณด? (Swift) ๋ณธ๋ฌธ
[๋ฐฑ์ค 4493] ๊ฐ์ ๋ฐ์ ๋ณด? (Swift)
๋น๋น bibi 2022. 10. 20. 23:31- ๋งจ ์ฒซ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐฏ์๊ฐ ์ฃผ์ด์ง๋ค
- ๊ทธ ์๋๋ถํฐ๋ ํ
์คํธ ์ผ์ด์ค๊ฐ ์ฃผ์ด์ง๋ค
- ํ ์คํธ ์ผ์ด์ค์ ์ฒซ ์ค์ ๊ฐ์๋ฐ์๋ณด ๊ฒ์ ํ์๊ฐ ์ฃผ์ด์ง๋ค
- ๊ทธ ์๋๋ถํฐ๋ ๊ฐ์๋ฐ์๋ณด ๊ฒ์ ํ์๋งํผ ๋ฌด์์ ๋๋์ง ์ฃผ์ด์ง๋ค
- ์ผ์ชฝ์ Player1, ์ค๋ฅธ์ชฝ์ Player2
- R = Rock = ๋ฐ์, S = Scissor = ๊ฐ์, P = Paper = ๋ณด
- ํ ์คํธ ์ผ์ด์ค๋ง๋ค ๋๊ฐ ์ด๊ฒผ๋์ง(๋๋ ๋น๊ฒผ๋์ง) ์ถ๋ ฅํ๋ค
ํ์ด
let count = Int(readLine()!)!
(1...count).forEach { num in
let game = Int(readLine()!)!
var score1 = 0
var score2 = 0
(1...game).forEach { _ in
let inputArr = readLine()!.split(separator: " ")
if inputArr.contains("R") && inputArr.contains("S") { // O(n)..
if inputArr.first! == "R" {
score1 += 1
} else {
score2 += 1
}
}
if inputArr.contains("S") && inputArr.contains("P") {
if inputArr.first! == "S" {
score1 += 1
} else {
score2 += 1
}
}
if inputArr.contains("P") && inputArr.contains("R") {
if inputArr.first! == "P" {
score1 += 1
} else {
score2 += 1
}
}
}
print(score1, score2)
if score1 > score2 {
print("Player 1")
} else if score1 < score2 {
print("Player 2")
} else {
print("TIE")
}
}
Player1์ด ๋ธ ํจ์ ๋ํด Player2๊ฐ ๋ธ ํจ๊ฐ ์ด๊ธฐ๋์ง/๋น๊ธฐ๋์ง/์ง๋์ง ๋ฅผ ๋น๊ตํ ์๋ ์์์ง๋ง,
๋๋ ์ด๊ธฐ๊ณ ์ง๋ ํจ์ ์กฐํฉ (๊ฐ์, ๋ฐ์ / ๋ฐ์, ๋ณด / ๊ฐ์, ๋ณด) ์ ๋ํด์๋ง ๋น๊ต๋ฅผ ํ๋ ํ์ด๊ฐ ๋จผ์ ๋ ์ฌ๋ผ ์ด๋ ๊ฒ ๊ตฌํํด ๋ณด์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ๋น๊ธธ ๋๋ ์ด๋ป๊ฒ ์ค์ฝ์ด๋ฅผ ์ ํ๋๋?? ์ฌ์ค ์๊ฐ์ง ๋ชปํ ๋ถ๋ถ์ด์๊ณ ์ง๊ธ ํ์ด๋ฅผ ์ ์ผ๋ฉด์ ๋์ณค์์ ๊นจ๋ฌ์์ง๋ง..๐ฅฒ ์ด์ฐจํผ ๋น๊ฒผ์ ๊ฒฝ์ฐ์๋ ๋ ์ค ์๋ฌด ์ชฝ์๋ ์ ์๋ฅผ ๋ํ์ง ์์ผ๋ฏ๋ก, ์นํจ์ ๊ฒฐ๊ณผ๋ ๋์ผํ๋ค.
(์ฑ์ ์ ํด ๋ณด๋ ํ ์คํธ ์ผ์ด์ค๊ฐ ๋ง์ ๊ฒ ๊ฐ์ง ์์์ ์์ฝ๋ค)
์๊ฐ๋ณต์ก๋๋ 60ms๊ฐ ๋์๋ค.
๋ณด์์
if inputArr.contains("R") && inputArr.contains("S") { ... }
์ด ๋ถ๋ถ์ contains ํจ์๊ฐ O(n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ฏ๋ก,
(์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ด๋ ์ ๋ ฅ์ด ์ผ์ ํ๋ค๋ ๊ฐ์ ํ์) ๋ฐฐ์ด์ ์ธ๋ฑ์ค ์ ๊ทผ์ผ๋ก ํ์๋ค๋ฉด ๋ ์ข์์ ๊ฒ ๊ฐ๋ค.
let count = Int(readLine()!)!
(1...count).forEach { num in
let game = Int(readLine()!)!
var score1 = 0
var score2 = 0
(1...game).forEach { _ in
let inputArr = readLine()!.split(separator: " ")
if inputArr[0] == "R" && inputArr[1] == "S"
|| inputArr[0] == "S" && inputArr[1] == "R" {
if inputArr.first! == "R" {
score1 += 1
} else {
score2 += 1
}
}
if inputArr[0] == "S" && inputArr[1] == "P"
|| inputArr[0] == "P" && inputArr[1] == "S" {
if inputArr.first! == "S" {
score1 += 1
} else {
score2 += 1
}
}
if inputArr[0] == "P" && inputArr[1] == "R"
|| inputArr[0] == "R" && inputArr[1] == "P" {
if inputArr.first! == "P" {
score1 += 1
} else {
score2 += 1
}
}
}
if score1 > score2 {
print("Player 1")
} else if score1 < score2 {
print("Player 2")
} else {
print("TIE")
}
}
์กฐ๊ฑด์ ๋ถ๋ถ์ด ๋๋ฐฐ๋ก ๊ธธ์ด์ง๊ธด ํ์ง๋ง ์์ ํด ๋ณด์๋ค (๊ฒฐ๊ณผ๋ ๋์ผํ๋ค)
์๊ฐ๋ณต์ก๋๋ ์ด์ชฝ์ด 56ms๋ก ์กฐ๊ธ ๋ ๋น ๋ฅด๊ฒ ๋์๋ค! ๐
'ํ๋ก๊ทธ๋๋ฐ > ์๊ณ ๋ฆฌ์ฆ ํ์ด Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 4880] ๋ค์์ (Swift) (0) | 2022.10.24 |
---|---|
[๋ฐฑ์ค 4504] ๋ฐฐ์ ์ฐพ๊ธฐ (Swift) (0) | 2022.10.21 |
[๋ฐฑ์ค 4458] ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก (0) | 2022.10.14 |
[๋ฐฑ์ค 3047] ABC (Swift) (0) | 2022.10.12 |
[๋ฐฑ์ค 3035] ์ค์บ๋ (Swift) (1) | 2022.10.05 |