롤케이크 자르기
두 명이 topping의 배열 요소들을 순서대로 나눠 가진다고 했을때 각자 가지고 있는 topping요소의 가짓수가 같은 경우가 몇개인지 구해야한다.
처음엔 제한사항이 topping의 길이가 < 1,000,000 이라 안될것 같았지만 다른 방법이 안떠올라 0~i, i~size-1 으로 배열을 잘라 set에 넣어줘 중복을 제거해 길이를 비교해 같으면 카운트 해주는 식으로 풀었는데 역시나 채점시에 시간이 초과되 다른사람의 풀이를 참고했다.
class Solution {
fun solution(topping: IntArray): Int {
var answer = 0
val leftSet = mutableSetOf<Int>()
val rightMap = mutableMapOf<Int, Int>()
for (top in topping) {
rightMap[top] = rightMap.getOrDefault(top, 0) + 1
}
for (i in topping.indices) {
val top = topping[i]
leftSet.add(top)
rightMap[top] = rightMap[top]!! - 1
if (rightMap[top] == 0) {
rightMap.remove(top)
}
if (leftSet.size == rightMap.size) {
answer++
} else if (leftSet.size > rightMap.size){
break
}
}
return answer
}
}
실제로는 로컬컴퓨터에서 merge를 잘 하지 않고 commit을 push github에서 pull request로 합치게 된다. 이유는 코드리뷰를 할 수 있기 때문이다.
main이 배포용 branch고 dev branch를 새로 만들어서 dev branch를 거쳐 가도록 해야한다. 그래서 dev를 defult branch로 설정한다.
기능 개발을 할때 팀원은 repository clone을 해서 프로젝트를 받아와서 각 기능개발에 대한 branch를 생성한다. (ex. feature/login)
commit한 코드를 push하고 github에서 dev에 merge하려고 할 때 오류가 발생하면 다른사람의 코드를 pull해서 오류가 있는지 테스트해 정상작동한다면 다시 push해주고 github에서 dev branch에 merge 해주면 된다.
git branch name
git switch name
git switch -c name
git checkout name
git checkout -b name