1193번: 분수찾기
let X = Int(readLine()!)!
var isTopToDown = true
var count = 0
OUTER: for x in 1...X {
isTopToDown = x.isMultiple(of: 2) ? true : false
for num in 1...x {
count += 1
if count == X {
isTopToDown ? print("\(num)/\(x - num + 1)") : print("\(x - num + 1)/\(num)")
break OUTER
}
}
}
1/1 1/2 1/3 1/4 1/5 …
2/1 2/2 2/3 2/4 … …
3/1 3/2 3/3 … … …
4/1 4/2 … … … …
5/1 … … … … …
… … … … … …
=================================================================
1/1...
1/2 > 2/1...
3/1 > 2/2 > 1/3... 이런 순서대로 찾아나가야 합니다.
분자와 분모가 번갈아가면서 늘어나고 줄어들고 있는걸 활용해서 코드를 구현합니다.
(다른 분들은 한 번 사이클이 돌 때마다 합이 1이 되는 것도 활용하시더라구요)
isTopToDown ? print("\(num)/\(x - num + 1)") : print("\(x - num + 1)/\(num)")
TIL...with trash
let X = Int(readLine()!)!
var isTopToDown = true
var fractions = [String]()
var count = 0
OUTER: for x in 1...X {
isTopToDown = x.isMultiple(of: 2) ? true : false
for num in 1...x {
count += 1
isTopToDown ? fractions.append("\(num)/\(x - num + 1)") : fractions.append("\(x - num + 1)/\(num)")
if count == X { break OUTER }
}
}
print(fractions[X-1])
시간초과를 발생시키는 쓸데없는 코드를 줄여야겠습니다.
print로 현재 반복문에서 돌고있는 문자열만 출력하고 break로 끝냈으면 됐는데,
굳이굳이 배열을 만들어서 배열 인덱스를 초과하다가 시간초과가 났습니다 😅
비록 한 번에 통과한 문제는 아니었지만(나름 두번째) 실패 원인이 무엇인지 파악하고 고쳐나가는 모습이 스스로가 대견합니다!
When you have nothing else to do then you can try these free slots no download https://theinternetslots.com/ . Here you will find a lot of entertaining games that will help you to brighten up your life. I'm sure that you will like some of those. Good luck.