programmers.co.kr/learn/courses/30/lessons/42586
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는
programmers.co.kr
스택/큐 분류에 들어있는 문제다.
퍼센트지가 들어있는 배열(progresses)이 각각 루프 1당(문제에서의 하루) speeds 배열의 값 만큼 진행되어서
퍼센트지가 100%로 다 채워졌을때가 몇 루프인지 계산하는 문제이다.
계산시에 progresses의 값이 들어있는 순서대로 뒷 값이 작은게 몇개인지 저장하고 그 값을 리턴해주면 된다.
나는 우선 퍼센트지가 전부다 찼을때의 루프수를 저장해놓기위해 complete배열을 progresses배열의 수 만큼 작성해두고.
progresses를 foreach문을 통해
내부에 while문으로 퍼센트치를 채워넣으면서 루프수(foreach문안의 변수 day)를 저장했다
그후 while문을 통해 complete배열이 앞값과 뒷값을 비교해가며 뒷값이 작을때 +1 뒷값이 클때 다시1 부터 카운트식으로 하여 코드를 짯다.
총 두 두분으로 나눠서 했다.
var complete = Array<Int>(repeating: 0, count: progresses.count)
for (i, persent) in progresses.enumerated() {
var day = 0
var persent = persent
while persent < 100 {
persent += speeds[i]
day += 1
}
complete[i] = day
}
var i = 0
var result = [Int]()
while i < complete.count {
var commit = 1
if (i + 1) >= complete.count {
result.append(commit)
break
}
for k in (i + 1) ..< complete.count {
if complete[i] >= complete[k] {
commit += 1
} else { break }
}
i += commit
result.append(commit)
}
return result
라인 자체는 적어보이는데 두 번째 루프문부분, 값비교하는 부분이 뭔가 찝찝하다
하지만 채점결과는 통과하니 그냥 넘어가련다. 생각하기 귀찮아졌다.
아래링크는 해당 소스가 올려놓은 깃허브 페이지이다.
github.com/wiwi-git/Programmers-learn/blob/master/swift/Practice/Practice/FunctionDevelopment.swift
wiwi-git/Programmers-learn
Contribute to wiwi-git/Programmers-learn development by creating an account on GitHub.
github.com
'iOS > swift' 카테고리의 다른 글
UIPickerView 의 텍스트 색상 변경하는 방법 (0) | 2021.06.17 |
---|---|
프로그래머스 - 프린터 (0) | 2021.05.06 |
프로그래머스 - 모의고사 (0) | 2021.05.04 |
프로그래머스 - 다리를 지나는 트럭 (0) | 2021.05.03 |
프로그래머스 - 크레인 인형뽑기 게임 (0) | 2021.04.28 |