Array 12) 멘토링 문제 짝 클래스 객체와 Map을 활용하는 풀이방식
394
작성한 질문수 18
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[][] arr = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = sc.nextInt();
}
}
System.out.println(answer(n, m, arr));
}
static class Pair {
int mento;
int menti;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Pair)) return false;
Pair pair = (Pair) o;
return mento == pair.mento && menti == pair.menti;
}
@Override
public int hashCode() {
return Objects.hash(mento, menti);
}
}
private static int refactor(int n, int m, int[][] arr) {
Map<Pair, Integer> map = new HashMap<>();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
for (int k = j+1; k < n; k++) {
Pair pair = new Pair();
pair.mento = arr[i][j];
pair.menti = arr[i][k];
map.put(pair, map.getOrDefault(pair, 1) + 1);
}
}
}
return (int) map.entrySet().stream().filter(entry -> entry.getValue() == m).count();;
}
}저는 위와 같이 짝에 부합하는 값들을 클래스를 통해 객체에 짝을 저장하고,
각 시험별 동일한 짝(객체)에 대한 중복을 제거함과 동시에 count값을 증가시키며 Map에 저장하는 방식으로 문제를 풀었습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
제공하신 코드에 대해서 살펴보았습니다. 자바(Java)를 활용한 멘토링 문제 해결 방식은 매우 흥미롭습니다. 코드에서 Pair 클래스를 사용하여 멘토와 멘티의 짝을 정의하고, 이를 활용하여 각 시험별로 멘토와 멘티의 조합을 Map<Pair, Integer>에 저장, 관리하는 방식은 객체 지향적 접근과 함께 컬렉션 프레임워크의 고급 활용법을 보여줍니다.
이 방식의 핵심은 Pair 객체의 동등성을 제대로 정의하는 것입니다. 이를 위해 equals()와 hashCode() 메소드를 오버라이드 하여 같은 멘토-멘티 짝이라면 Map에서 동일한 키로 인식하도록 하였습니다. 이렇게 구현함으로써 시험별로 동일한 짝에 대해 중복을 피하면서도 카운트 값을 증가시킬 수 있습니다.
또한, 문제 해결의 마지막 단계에서는 스트림을 활용하여 map.entrySet().stream().filter(entry -> entry.getValue() == m).count();를 통해 모든 시험에서 일관되게 멘토링이 이루어진 짝의 수를 세는 방식도 매우 효율적입니다.
질문에 직접적인 답변 외에도 추가적인 정보를 제공해 드리고자 합니다만, 제공된 정보에는 자바 프로그래밍과 관련된 내용은 없습니다. 전반적으로 접근 방식에 문제가 없어 보이며, 로직 구현에 있어서도 명확하게 요구 사항을 충족시키고 있는 것으로 보입니다.
질문에 대한 답변이 도움이 되었기를 바랍니다. 프로그래밍 공부에 있어서 추가적인 질문이 있으시면 언제든 문의해 주세요.
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
22
1
갑자기 채점 사이트가 바뀌었어요
0
29
1
문제 리스트 페이지
0
26
1
채점 사이트 관련 질문드립니다
0
23
1
봉우리 문제 질문입니다
0
80
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
63
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
70
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
67
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
84
2
6-7 강의에서
0
47
1
6-6. 장난꾸러기 질문 있습니다.
0
43
1
강의 수강후 코딩테스트
0
106
1
answer 변수 사용 여부
0
43
1
2중 for문
1
84
2
2-11. 임시반장정하기 (Runtime Error)
0
63
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
69
1
이런 풀이는 어떨까요
0
42
1
자바 스트림 방식의 효율성 질문 드립니다.
0
56
1
알고리즘 자료 구조들..
0
60
1
StringBuilder vs BufferdWriter
0
47
1
원더랜드(프림)
0
48
1
이런 코드는 어떤가요?
0
59
1
bfs 풀이
0
56
1
병합정렬
0
55
1





