알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄
https://school.programmers.co.kr/learn/courses/30/lessons/42888
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Think🤔
Enter 채팅방 입장
Leave 채팅방 퇴장
Change 채팅방 변경
각각 함수 따로 생성
아이디는 중복 X , 닉네임은 중복 가능
import java.util.HashMap;
class Solution {
public String[] solution(String[] record) {
HashMap<String, String> id = new HashMap();
int count = 0; // 출력 카운트 몇인지
for(String str : record){
String[] info = str.split(" ");
String behavior = info[0];
if(behavior.equals("Enter")){
count++;
}else if(behavior.equals("Leave")){
count++;
continue;
}
id.put(info[1],info[2]); // uid1234 , Muzi
}
String[] answer = new String [count];
int answerCnt = 0;
for(int i=0; i<answer.length; i++){
String[] str = record[i].split(" ");
String behavior = str[0];
String nickName = str[1];
if(behavior.equals("Enter")){
answer[answerCnt] = id.get(nickName) + "님이 들어왔습니다.";
}else if(behavior.equals("Leave")){
answer[answerCnt] = id.get(nickName) + "님이 나갔습니다.";
}
answerCnt++;
}
return answer;
}
}
// 반복문 record 돔
// hashmap 아이디랑 닉네임
// change면 hashMap value 변경
// 다 돌고 다시 for문 돌려서
// 아이디에 맞는 value값 글자 보여주면서 들어왔습니다 , 나갔습니다 보여줌
// 변경은 안보임
샘플 테스트만 통과하고 다틀림...
왜 틀렸는지 궁금했는데 똑같은 코드도 있는데 통과하지 못함
Solution✍
import java.util.HashMap;
class Solution {
public String[] solution(String[] record) {
HashMap<String, String> id = new HashMap();
int count = 0; // 출력 카운트 몇인지
for(String str : record){
String[] info = str.split(" ");
String behavior = info[0];
if(behavior.equals("Enter")){
count++;
}else if(behavior.equals("Leave")){
count++;
continue;
}
id.put(info[1],info[2]); // uid1234 , Muzi
}
String[] answer = new String [count];
int answerCnt = 0;
for(int i=0; i<record.length; i++){ ///////////// 이곳 answer이 아님
String[] info = record[i].split(" ");
String behavior = info[0];
String nickName = id.get(info[1]);
if(behavior.equals("Enter")){
answer[answerCnt++] = nickName + "님이 들어왔습니다.";
}else if(behavior.equals("Leave")){
answer[answerCnt++] = nickName + "님이 나갔습니다.";
}
}
return answer;
}
}
answer이 아닌 부분 record를 바꿔줬는데 반례를 생각해 보면
들어왔고 , 변경했고 , 나갔으면
들어옴 1
변경 0
나감 1
이여서 총 2의 길이를 가짐
근데 마지막 나감도 찍어줘야 되기 때문에 모든 record를 검사해야 됨...
Review🤩
이상한 곳에서 헤맸다..
'Algorithm' 카테고리의 다른 글
[프로그래머스] N개의 최소공배수 (1) | 2024.04.17 |
---|---|
[프로그래머스] [1차] 뉴스 클러스터링 (0) | 2024.04.09 |
[프로그래머스] 구명보트 (0) | 2024.01.16 |
[프로그래머스] 3월에 태어난 여성 회원 목록 출력하기 , 대여 기록이 존재하는 자동차 리스트 구하기 , 가격대 별 상품 개수 구하기 , 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2024.01.15 |
[프로그래머스] 달리기 경주 (0) | 2024.01.15 |