728x90
Lv. 1 신고 결과 받기 -> (실패)
참고할만한 풀이.
1. Person객체를 만들어서 나를 신고한 사람 명단을 속성으로 가지고 있게 만든다.
2. Person객체들을 각각 String,Person객체를 타입으로 갖는 HashMap에 담는다.
3. HashMap의 신고당한 사람의 객체에 신고한사람의 이름을 추가한다.
4. 각 Person객체의 신고한사람의 수를 센다.
https://programmers.co.kr/learn/courses/30/lessons/92334
코딩테스트 연습 - 신고 결과 받기
문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의
programmers.co.kr
출처 : 프로그래머스
import java.util.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
ArrayList<User> users = new ArrayList<>();
HashMap<String,Integer> suspendedList = new HashMap<>(); //<이름>
HashMap<String,Integer> idIdx = new HashMap<String,Integer>(); // <이름, 해당 이름의 User 클래스 idx>
int idx = 0;
for(String name : id_list) {
idIdx.put(name,idx++);
users.add(new User(name));
}
for(String re : report){
String[] str = re.split(" ");
//suspendedCount.put(str[0], suspendedCount.getOrDefault(str[0],0)+1);
users.get( idIdx.get(str[0])).reportList.add(str[1]);
users.get( idIdx.get(str[1])).reportedList.add(str[0]);
}
for(User user : users){
if(user.reportedList.size() >= k)
suspendedList.put(user.name,1);
}
for(User user : users){
for(String nameReport : user.reportList){
if(suspendedList.get(nameReport) != null){
answer[idIdx.get(user.name)]++;
}
}
}
return answer;
}
}
class User{
String name;
HashSet<String> reportList;
HashSet<String> reportedList;
public User(String name){
this.name = name;
reportList = new HashSet<>();
reportedList = new HashSet<>();
}
}
Lv. 1 로또의 최고 순위와 최저 순위 - (성공)
나의 풀이 :
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
//같은 번호수
int dubNum = 0;
int best = 0;
int worst = 0;
// 0 개수
int zeroNumber = 0;
//0개수 파악
for(int num : lottos){
if (num == 0){
zeroNumber++;
}
}
//현재 같은 번호 개수 파악
for(int i = 0 ; i < 6 ; i++){
for(int j = 0; j < 6 ; j++){
//같은 번호가 있다면
if (lottos[i] == win_nums[j]) {
dubNum++;
break;
}
}
}
int resultBest = zeroNumber + dubNum;
if (resultBest > 6){
resultBest = 6; //같을 수 있는 최대 개수는 6
}
int resultWorst = dubNum;
int[] answer = {Solution.ranking(resultBest), Solution.ranking(resultWorst)};
return answer;
}
public static int ranking(int num){
switch(num){
case 0 : {
return 6;
}
case 1 : {
return 6;
}
case 2 : {
return 5;
}
case 3 : {
return 4;
}
case 4 : {
return 3;
}
case 5 : {
return 2;
}
case 6 : {
return 1;
}
}
return 0;
}
}
728x90
'알고리즘' 카테고리의 다른 글
[Algorithm] 5월29일 알고리즘 연습 (0) | 2022.05.29 |
---|---|
[Algorithm] 5월 26일 알고리즘 연습 (0) | 2022.05.26 |
[Algorithm] 5월 25일 알고리즘 연습 (0) | 2022.05.25 |
[Algorithm] 5월 23일 알고리즘 연습 (0) | 2022.05.23 |
[Algorithm] 5월 20일 알고리즘 연습 (1) | 2022.05.20 |
댓글