Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 중복된 단어
- 스프링 데이타 JPA
- 배열을 객체로
- 객체를 배열로
- 깃 토큰 만료
- 객체의키값만 찾기
- 단어 제거
- 5.3.8 Modifying Queries
- 시퀄 문법
- 배엘에서 스왑
- ubuntu타임존
- ...점점점문법
- indexOf()
- 문자열순서바꾸기
- 중복단어제거
- 제로베이스
- 레디스 확인
- js 문자열을 문자배열로
- 문자열 중복
- 중복 문자열
- 재귀스왑
- sql 문자열 패턴 검색
- 코딩 어?
- 우분투 시간 변경
- lastIndexOf()
- 객체의 밸류값만 찾기
- @Moditying @Query
- 중복문자제거
- sql like연산자
- 프론트엔드 스쿨
Archives
- Today
- Total
코딩기록
코테) 맞팔 관계인 쌍의 수 리턴 본문
728x90
문제
SNS에서 서로가 팔로우를 했다는 것을 '맞팔'이라고 표현합니다.
다음 팔로우 관계를 나타낸 배열을 통해 서로 맞팔 관계인 쌍의 수를 리턴하는 함수를 작성하세요.
이때 ["철수", "영희"] 라는 정보는 철수가 영희를 팔로우 했음을 나타냅니다.
입력
팔로우 관계가 표현된 String 2차원 배열 A.
출력
맞팔 관계인 쌍의 수
매개변수 : Stirng[][] A
리턴타입 : int
풀이
const solution = (A) => {
const followSet = new Set(); // 팔로우 관계 저장
let mutualCount = 0; // 맞팔 관계 수
for (const [a, b] of A) {
const reverseRelation = `${ b } -> ${ a }`; // 반대 관계를 문자열로 생성
if (followSet.has(reverseRelation)) {
mutualCount++; // 반대 관계가 존재하면 맞팔로 간주
}
followSet.add(`${ a } -> ${ b }`); // 현재 관계를 추가
}
return mutualCount;
}
console.log("solution", solution([["철수", "영희"], ["영희", "진수"], ["진수", "동수"], ["진수", "진호"]])); //결과는: 0
위 코드의 for (const [a, b] of A)는 배열 A의 각 원소(쌍)를 순회하며, 각 쌍에 대해 팔로우 관계를 처리하는 구조.
- 배열 A의 순회
- 배열 A는 2D 배열입니다. 각 원소는 [a, b] 형태로, a는 팔로우하는 사람, b는 팔로우 받는 사람.
- 예를 들어, ["철수", "영희"]는 a = "철수", b = "영희"로 해석.
- 반복문 내부의 동작
- for (const [a, b] of A)는 배열 A에서 각 원소(쌍)을 하나씩 꺼내고, 그 원소를 a와 b라는 변수에 할당.
- a는 팔로우하는 사람, b는 팔로우 받는 사람.
- reverseRelation 문자열 생성
- reverseRelation은 현재 쌍 [a, b]의 반대 방향 팔로우 관계를 나타냄. 즉, b가 a를 팔로우하는 관계를 나타내는 문자열을 생성.
- 예를 들어, a = "철수", b = "영희"일 경우, reverseRelation은 "영희->철수".
-
const reverseRelation = `${b}->${a}`;
- 반대 관계가 이미 존재하는지 확인
-
if (followSet.has(reverseRelation)) { mutualCount++; // 반대 관계가 존재하면 맞팔로 간주 }
- followSet은 이미 팔로우 관계를 저장한 Set 객체입.
- followSet.has(reverseRelation)는 반대 관계가 followSet에 이미 존재하는지 확인하는 조건문.
- 예를 들어, 현재 "철수" -> "영희"가 팔로우 관계로 추가되었고, reverseRelation이 "영희->철수"일 경우, followSet에 "영희->철수"가 존재하면 맞팔 관계로 간주하고, mutualCount를 1 증가시킴.
-
-
followSet.add(`${a}->${b}`);
- 현재 팔로우 관계인 "a->b"를 followSet에 추가합니다. 예를 들어, a = "철수", b = "영희"일 경우 "철수->영희"가 followSet에 저장.
동작
const A = [
["철수", "영희"], ["영희", "진수"], ["진수", "동수"], ["진수", "진호"]
];
첫 번째 반복 (["철수", "영희"]):
- reverseRelation = "영희->철수". followSet은 빈 상태이므로 반대 관계가 존재하지 않습니다.
- followSet.add("철수->영희").
최종적으로 맞팔 관계는 없고, mutualCount는 0으로 반환.
${a}->${b} 이 템플릿 리터럴 안에 -> 는 단순히 문자열의 일부임.
반응형
'프론트 > JS)코딩테스트' 카테고리의 다른 글
Comments