본문 바로가기
algorithm/hackerRank

[HackkerRank] Hash Tables: Ice Cream Parlor

by 무대포 개발자 2018. 6. 25.
728x90
반응형

2. Feedback

  • Hash 를 이용해서 나머지 하나의 값을 찾는 것까지는 생각했는데, 중복 값 처리가 안될거 같아 이 방법을 포기
  • 결국 중복 값이 HashMap 에 덮어쳐도 array 값을 이용해서 덮어쳐져있는 값을 불러오기에 중복 값 문제 해결 됨.
  • 또 중요한 것은 array 의 index != map 의 value 와 일치하면 안됨. 같은 값이니

3. Source

package hackerrank;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class IceCreamParlor
{
	public static void main(String [] args)
	{
		Scanner in = new Scanner(System.in);
		int t = in.nextInt();
		for (int testcase = 0; testcase < t; testcase++)
		{
			int money = in.nextInt();
			int n = in.nextInt();
			int id[] = new int [n + 1];
			for (int i = 1; i < n + 1; i++)
				id[i] = in.nextInt();
			int res[] = solve(id, money);
			for (int num : res)
			{
				System.out.print(num + " ");
			}
			System.out.println();
		}
		in.close();
	}

	public static int [] solve(int [] id, int money)
	{
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();

		for (int i = 1; i < id.length; i++)
		{
			map.put(id[i], i);
		}
		System.out.println(map);
		for (int i = 1; i < id.length; i++)
		{
			int diff = money - id[i];
			if (diff > 0 && map.containsKey(diff)
					&& map.get(diff) != i)
			{
				return new int [] { i, map.get(diff) }; 
			}
		}
		throw new IllegalArgumentException("No answer...");
	}
}


댓글