본문 바로가기
개발노트/프로그래머스

프로그래머스 로그인 성공? 코틀린

by 시계속세상은아직돌아가는중 2023. 8. 8.

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/120883

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2. 정답

구현검증

fun main(){

    val db:Array<Array<String>> = arrayOf(arrayOf("rardss","123"),
                                          arrayOf("yyoom","1234"),
                                          arrayOf("meosseugi","1234"))
    val id_pw: Array<String> = arrayOf("yyoom","1234")
    var result = "fail"

    for (i in db){

        if (i[0] == id_pw[0]){
            if (i[1] == id_pw[1]){
            result = "login"
                break
            }else{
                result = "worng pw"
                break
            }
        }}

    println(result)
}

정답

class Solution {
    fun solution(id_pw: Array<String>, db: Array<Array<String>>): String {
        var answer: String = "fail"
        for(i in db){
            if(i[0] == id_pw[0]){
                if(i[1] == id_pw[1]){
                    answer = "login"
                    break
                }else{
                    answer = "wrong pw"
                    break
                }
            }
        }
        
        return answer
    }
}

 

3) 고찰

 

최초 아이디어에서는 Strig에 값을 주지 않고

 

class Solution {
    fun solution(id_pw: Array<String>, db: Array<Array<String>>): String {
        var answer: String = ""
        for(i in db){
            if(i[0] == id_pw[0]){
                if(i[1] == id_pw[1]){
                    answer = "login"
                    break
                }else{
                    answer = "wrong pw"
                    break
                }
            }else{
            answer = fail
            break
            }
        }
        
        return answer
    }
}

로 작성하여 코드가 fail이 나왔다.

 

id와 pw를 탐색하는 와중에 if문을 탈출하고 (break)하고도 또 for문이 돌아서 else를 거친 것이다.

이를 수정하기 위해 초기 answer = "fail"로 주었고 esle문을 삭제했다.

정말 기초적인 실수였으니 바로 고칠 수 있었지만, 앞으로 이런 결과를 안나오게 설계를 하고 시작하는게 좋을 것 같다.

떠오르는대로 코드를 작성한 결과값이 좋지 않았으며 구상된 코드의 결과값을 한 번 복기해볼 필요가 있는 것 같다.