greenhelix
greenhelix
greenhelix
05-09 03:00
  • All (229)
    • Algorithm (118)
      • Algorithm (17)
      • Graph (0)
      • Core (6)
      • Python (18)
      • PythonSnippet (4)
      • Java (59)
      • Kotlin (14)
    • Project (0)
    • Study (8)
      • License (5)
      • EIP (3)
    • Programming (63)
      • Android (41)
      • Flutter (1)
      • Bugs Life (21)
      • Linux (0)
    • Tech (32)
      • Tech (17)
      • Drone (4)
      • Hacking (11)
    • Life (6)
      • INGRESS (1)
      • 심시티빌드잇 (0)
250x250

티스토리

hELLO · Designed By 정상우.
greenhelix

greenhelix

#08_CS Arcade Kotlin >> Matrix Elements Sum
Algorithm/Kotlin

#08_CS Arcade Kotlin >> Matrix Elements Sum

2020. 12. 31. 23:00

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
    'Algorithm/Kotlin' 카테고리의 다른 글
    • Kotlin 기본 변수 및 연산자
    • [프로그래머스 뿌셔뿌셔] :Kotlin: 크레인 인형 뽑기 게임
    • #07_CS Arcade Kotlin >> Almost Increasing Sequence
    • #06_CS Arcade Kotlin >> Make Array Consecutive 2
    greenhelix
    greenhelix
    개발에 관한 것들과 개인적인 것을 담는 블로그

    티스토리툴바