본문 바로가기
코딩테스트

[프로그래머스] 특별한 이차원 배열 2

by liz_devel 2025. 9. 10.

🗒 문제

 


📝 나의 문제풀이

class Solution {
    fun solution(arr: Array<IntArray>): Int {
        var n = arr.size
      	  for(i in 0 until n){
  	          for(j in 0 until n){
   	            if(arr[i][j] != arr[j][i]) return 0 
   	         }
  	      }
      	  return 1
  	  }
}

 


📝 다른 사람의 문제 풀이

다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.

class Solution {
    fun solution(arr: Array<IntArray>) = if ((arr.indices).all { i -> (i + 1 until arr.size).all { j -> arr[i][j] == arr[j][i] } }) 1 else 0
}

🖊 문제 풀이 시 알면 좋을 것

. 반복문 vs 함수형 스타일

  • 반복문 방식
    • 직관적이고 읽기 쉬움.
    • 디버깅하거나 중간에 return으로 빠져나오기 쉬움.
    • 문제를 처음 풀 때는 이 방식이 안정적.
  • 함수형(all, any, map) 방식
    • 코드가 간결해지고 가독성이 좋음.
    • 하지만 처음 보는 사람은 이해하기 어려울 수 있음.
    • 알고리즘 문제 풀이 사이트에서 좋아요를 많이 받는 건 대체로 이 쪽.
  • Kotlin 함수형 API (all, any, none)
    • .all { 조건 } : 모든 원소가 조건을 만족하면 true
    • .any { 조건 } : 하나라도 조건을 만족하면 true
    • .none { 조건 } : 하나도 만족하지 않으면 true
    → 코드 간결화에 유용.

indices

  • 배열이나 리스트의 인덱스 범위(IntRange)를 돌려줌.
val arr = arrayOf(1, 2, 3)
println(arr.indices) // 0..2

 

 

until

  • 특정 숫자 전까지의 범위를 만드는 연산자.
  • n이 3이면 0, 1, 2만 출력됨
for (i in 0 until n) { println(i) } // 0 ~ n-1

 

 

협업하는 과정에서 가독성을 생각하면 반복문 방식으로 푸는 게 적합하다고 생각한다.

반응형