
내가 생각했을때 문제에서 원하는부분
머쓱이는 프로그래머스에 로그인하려고 합니다.
머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다.
로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다.
내가 이 문제를 보고 생각해본 부분
변수 분리하기
String inputId = id_pw[0];와 String inputPw = id_pw[1];을 통해 앞으로 비교하기 편하게 내가 입력한 아이디와 비밀번호를 각각 변수에 담아둔다.
회원 명부 탐색하기 (for 문)
for (String[] member : db)는 db에 등록된 회원들의 정보를 한 명씩 꺼내서 member라는 배열에 담아주는 반복문이다.
member[0]은 그 회원의 아이디를 의미하고, member[1]은 그 회원의 비밀번호를 의미한다.
아이디 비교하기 (if (inputId.equals(dbId)))
자바에서 문자열을 비교할 때는 == 대신 .equals()를 사용한다.
내가 입력한 아이디(inputId)와 명부에 있는 아이디(dbId)가 같다면 다음 단계로 넘어간다.
비밀번호 비교하기 (if (inputPw.equals(dbPw)))
아이디가 일치하므로 곧바로 비밀번호가 같은지 확인한다.
비밀번호까지 맞으면 "login"을 즉시 반환하고 함수를 종료한다.
비밀번호가 틀렸다면 "wrong pw"를 반환하고 종료한다.
아이디를 찾지 못한 경우 (return "fail")
반복문을 끝까지 다 돌았음에도 일치하는 아이디를 한 번도 찾지 못했다면, 가입된 아이디가 없는 것이므로 자연스럽게 바깥쪽의 return "fail";이 실행된다.
main 메서드의 역할
프로그래머스 환경과 달리 인텔리제이에서 코드가 잘 동작하는지 눈으로 직접 확인하기 위해 만든 테스트 실행용 공간이다.
코드로 구현
class Solution {
public String solution(String[] id_pw, String[][] db) {
String inputId = id_pw[0];
String inputPw = id_pw[1];
for (String[] member : db) {
String dbId = member[0];
String dbPw = member[1];
if (inputId.equals(dbId)) {
if (inputPw.equals(dbPw)) {
return "login";
} else {
return "wrong pw";
}
}
}
return "fail";
}
}
프로그래머스 코드
package programmers.programmers2;
// 프로그래머스 로그인 성공?
public class Main148 {
public static String solution(String[] id_pw, String[][] db) {
String inputId = id_pw[0];
String inputPw = id_pw[1];
for (String[] member : db) {
String dbId = member[0];
String dbPw = member[1];
if (inputId.equals(dbId)) {
if (inputPw.equals(dbPw)) {
return "login";
} else {
return "wrong pw";
}
}
}
return "fail";
}
public static void main(String[] args) {
// 테스트 케이스 1 ("login")
String[] id_pw1 = {"meosseugi", "1234"};
String[][] db1 = {{"rardss", "123"}, {"yyoom", "1234"}, {"meosseugi", "1234"}};
System.out.println(solution(id_pw1, db1));
// 테스트 케이스 2 ("wrong pw")
String[] id_pw2 = {"programmer01", "15789"};
String[][] db2 = {{"programmer02", "111111"}, {"programmer00", "134"}, {"programmer01", "1145"}};
System.out.println(solution(id_pw2, db2));
// 테스트 케이스 3 ("fail")
String[] id_pw3 = {"rabbit04", "98761"};
String[][] db3 = {{"jaja11", "98761"}, {"krong0313", "29440"}, {"rabbit00", "111333"}};
System.out.println(solution(id_pw3, db3));
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.