깊은바다거북
개발 공부 기록
깊은바다거북
전체 방문자
오늘
어제
  • 분류 전체보기 (219)
    • JAVA (9)
    • JavaScript (15)
    • 스파르타코딩클럽 (11)
      • [내일배움단] 웹개발 종합반 개발일지 (5)
      • [내일배움캠프] 프로젝트와 트러블 슈팅 (6)
    • SQL | NoSQL (4)
    • CS 등등 (0)
    • TIL | WIL (173)
    • 기타 에러 해결 (3)
    • 내 살 길 궁리 (4)

인기 글

최근 글

최근 댓글

태그

  • Til
  • 코딩테스트 연습문제
  • leetcode-cli
  • 시간 복잡도
  • POST / GET 요청
  • 팀 프로젝트
  • 트러블 슈팅 Troubleshooting
  • Inorder Traversal(중위 순회)
  • 01. 미니 프로젝트
  • 최소 힙(Min Heap)
  • tree
  • Preorder Traversal(전위 순회)
  • 재귀 함수
  • BST(이진 탐색 트리)
  • Leetcode
  • 자잘한 에러 해결
  • 자바스크립트 기초 문법
  • 혼자 공부하는 자바스크립트
  • TIT (Today I Troubleshot)
  • Binary Tree(이진 트리)
  • DFS(깊이우선탐색)
  • 최대 힙(Max Heap)
  • Backtracking(백트래킹)
  • 점화식(Recurrence Relation)
  • TypeScript
  • BFS(너비우선탐색)
  • 프로그래머스
  • 자료 구조
  • Linked List
  • Trie
hELLO · Designed By 정상우.
깊은바다거북

개발 공부 기록

5/9 화 [프로그래머스] 해시(Hash), 폰켓몬 TIL
TIL | WIL

5/9 화 [프로그래머스] 해시(Hash), 폰켓몬 TIL

2023. 5. 9. 15:05

[프로그래머스] 해시 > 폰켓몬

https://school.programmers.co.kr/learn/courses/30/lessons/1845

나의 풀이:

function solution(nums) {
	// nums / 2와, 폰켓몬 종류 수 중에서
	// 폰켓몬 종류 수 < mums / 2면 종류 수를 반환하고
	// 그게 아니면 nums / 2 값을 반환한다. 
	if (nums.length % 2 !== 0) {
		console.log('nums의 길이가 짝수가 아닙니다');
		return;
	}
	if (nums.length > 10000) {
		console.log('nums의 길이가 10,000을 넘어갑니다');
		return;
	}
	const map = new Map();
	nums.forEach((type) => {
		// map.set(type, (map.get(type) ?? 0) + 1); // 사실 종류별 개수를 기록할 필요도 없다.
		map.set(type, 0);
	});
	return nums.length / 2 < map.size ? nums.length / 2 : map.size;
}

// Set을 이용하기: 
function solution2(nums) {
	const max = nums.length / 2;
	const set = new Set(nums);

	return set.size > max ? max : set.size;
}

테스트 코드:

// 
const { solution } = require('./104-해시-폰켓몬');

describe('Ponkemon', () => {
	[
		{ nums: [1, 3], result: 1, },
		{ nums: [1, 1], result: 1, },

		{ nums: [3, 2, 1, 1], result: 2, },
		{ nums: [1, 1, 1, 1], result: 1, },
		{ nums: [3, 1, 2, 3], result: 2, },

		{ nums: [3,3,3,2,2,4], result: 3, },
		{ nums: [3,3,3,2,2,2], result: 2, },
		{ nums: [3,3,3,3,3,3], result: 1, },

	]
		.forEach(({ nums, result }) => {
			it(`should return ${result} when given array is [${nums}]`, () => {
				expect(solution(nums)).toBe(result);
			})
		})
})

알게된 것:

  • new Set()에 배열 그대로를 넣어줄 수 있다.


※ 위 내용은 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※


Uploaded by N2T

    'TIL | WIL' 카테고리의 다른 글
    • 5/10 수 [LeetCode #217] 배열에 중복되는 값이 있으면 true 반환하기 TIL
    • 5/9 화 [LeetCode #26] 순서를 유지하여 배열에서 중복 숫자 제거하기 TIL
    • 4/25 화 (정규표현식) TIL
    • 4/25 화 [프로그래머스] 해시(Hash), 완주하지 못한 선수와 Object, Map의 시간복잡도 TIL
    깊은바다거북
    깊은바다거북

    티스토리툴바