Code Signal -Arcade Kotlin
코드시그널 아케이드 코틀린 풀이
코드시그널 아케이드 Intro 자바 풀이가 끝나고 코틀린 풀이를 올리게 되었습니다.
질문과 틀린부분은 댓글로 남겨주세요. 🎅
글을 참고 하셨다면, 공감, 하트 한번 눌러주시고 가주시면 감사하겠습니다. 🧡💚💘
바둑판같은데에 숫자들이 들어있다고 생각한다.
각 행에서 0이 발견되면, 그 아래의 열의 값들은 다 무시된다.
만약 행의 요소들에 0이 아니라면 계속 더해간다.
즉 계산을 세로방향으로 진행하게 한다.
풀이.
//코틀린
fun matrixElementsSum(matrix: MutableList<MutableList<Int>>): Int {
var total = 0
for(i in 0 until matrix[0].size)
for(j in 0 until matrix.size){
if(matrix[j][i] == 0){
break;
}else {total += matrix[j][i]}
}
return total
}
for 반복문을 이중으로 사용하여 matrix를 순회한다. 가로 세로로 움직이는 형태로 반복문이 돌아가며 조건문을 통해서
0이 발견되는 즉시 해당 라인을 벗어나고 다음 계산으로 넘어간다. 이러한 경우 말고는 total에 차곡차곡 값을 더해가는 로직이다.
fun matrixElementsSum(m: List<List<Int>>) =
m[0].indices.map{c -> m.indices.map{m[it][c]}.takeWhile{it > 0}.sum()}.sum()
이 풀이를 보면, indices를 사용한다. 그리고 takewhile 이라는 메서드를 사용한다.
- indices는 간단하게 모든 리스트의 요소들을 하나씩 본다는 소리이다.
- takewhile은 뒤에 따라오는 조건문에 속하는 것을 리스트에서 가져온다는 것이다. ( 보러가기 )
//자바
int matrixElementsSum(int[][] matrix){
int total = 0;
System.out.println("이중배열의 행의 갯수는? "+matrix.length+ " 행");
System.out.println("이중배열의 열의 갯수는? "+matrix[0].length+ " 열");
for(int j =0; j < matrix[0].length; j++)
for(int i =0; i < matrix.length; i++){
//행을 선택하고, 열안으로 들어갓을때 값이 0이라면 볼것도 없음.
//다른 행의 해당 열은 다 무시됨.
if(matrix[i][j] == 0) {
System.out.println(i+1+"행"+(j+1)+"번째에 유령이 나타났당! 밑에는 다버령");
break;
}
//그외의 0이 아닌 숫자들은 total에 차곡차곡 쌓는다.
else total += matrix[i][j];
}
return total;
}
태그:
codesignal arcade intro kotlin solution
코드시그널 아케이드 인트로 코틀린 풀이
코틀린 공부
728x90
반응형
'Algorithm > Kotlin' 카테고리의 다른 글
[프로그래머스 뿌셔뿌셔] :Kotlin: 크레인 인형 뽑기 게임 (0) | 2021.01.04 |
---|---|
#07_CS Arcade Kotlin >> Almost Increasing Sequence (0) | 2020.12.30 |
#06_CS Arcade Kotlin >> Make Array Consecutive 2 (0) | 2020.12.29 |