본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 로그인 성공?

by nam_ji 2024. 9. 21.

로그인 성공? - LV.0

문제

  • 문자열 배열 id_pw와 2차원 문자열 배열 db가 매개변수로 주어집니다.
  • 머쓱이는 프로그래머스에 로그인하려고 합니다.
  • 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때,
  • 다음과 같이 로그인 성공, 실패에 따른 메시지를 출력하는 문제입니다.
    • 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 출력.
    • 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를,
    • 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 출력


테스트 (인텔리제이)

  • 우선 id와 pw를 분리해서 각각 변수에 담아줍니다.
  • db의 크기만큼 반복하는 for문을 만들고
  • if문으로 db의 id와 pw가 모두 일치하는 조건으로 일치하면 answer에 login 문자열을 담아줍니다.
  • 여기서 break가 없으면 다음 else if문의 조건도 확인하고 일치하면 answer의 값이 변할 수 있기 때문에 break를 걸어줍니다.
  • 다음 else if문은 id만 일치할 경우 answer에 worng pw 문자열을 담아주고 break를 걸어줍니다.
  • 마지막 else문에는 위 조건 모두 일치하지 않기 때문에 answer에 fail을 담아주면 됩니다.
package com.namji.codingtest.unsuccess;

public class 로그인_성공 {
  public static void main(String[] args) {
    /*
    문자열 배열 id_pw와 2차원 문자열 배열 db가 매개변수로 주어집니다.
    머쓱이는 프로그래머스에 로그인하려고 합니다.
    머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와
    회원들의 정보가 담긴 2차원 배열 db가 주어질 때,
    다음과 같이 로그인 성공, 실패에 따른 메시지를 출력하는 문제입니다.
    - 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 출력.
    - 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를,
      아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 출력

    입출력 예
    id_pw
    ["meosseugi", "1234"]
    ["programmer01", "15789"]
    ["rabbit04", "98761"]

    db
    [["rardss", "123"], ["yyoom", "1234"], ["meosseugi", "1234"]]
    [["programmer02", "111111"], ["programmer00", "134"], ["programmer01", "1145"]]
    [["jaja11", "98761"], ["krong0313", "29440"], ["rabbit00", "111333"]]

    result
    "login"
    "wrong pw"
    "fail"

    입출력 설명
    #1
    db에 같은 정보의 계정이 있으므로 "login"을 return합니다.
    #2
    db에 아이디는 같지만 패스워드가 다른 계정이 있으므로 "wrong pw"를 return합니다.
    #3
    db에 아이디가 맞는 계정이 없으므로 "fail"을 return합니다.
     */
    String[] id_pw = {"meosseugi", "12345"};
    String[][] db = {{"rardss", "123"}, {"yyoom", "1234"}, {"meosseugi", "1234"}};

    String answer = "";
    String id = id_pw[0];
    String pw = id_pw[1];

    for (String[] data : db) {
      if (id.equals(data[0]) && pw.equals(data[1])) {
        answer = "login";
        break;
      } else if (id.equals(data[0])) {
        answer = "wrong pw";
        break;
      } else {
        answer = "fail";
      }
    }

    System.out.println(answer);
  }
}

프로그래머스 코드

class Solution {
    public String solution(String[] id_pw, String[][] db) {
        String answer = "";
        String id = id_pw[0];
        String pw = id_pw[1];
        
        for (String[] data : db) {
            if (id.equals(data[0]) && pw.equals(data[1])) {
                answer = "login";
                break;
            } else if (id.equals(data[0])) {
                answer = "wrong pw";
                break;
            } else {
                answer = "fail";
            }
        }
        
        return answer;
    }
}