[프로그래머스] 폰켓몬 (Java, Python)

Moveheon·2023년 9월 29일

프로그래머스

목록 보기
4/24
class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
        for(int i = 0; i < nums.length; i++) {
        	if(hm.containsValue(nums[i])) continue;
        	else hm.put(i, nums[i]);
        }
        
        answer = (nums.length / 2 > hm.size() ? hm.size() : nums.length / 2);
        
        return answer;
    }
}

해시 사용하는 문제

  • 해시 맵에 nums 넣는데 중복되는 nums 값이 있다면 continue
    • 근데 Array 써도 될거 같다.
  • nums의 인덱스 개수 / 2 와 해시맵의 사이즈를 비교하여 더 작은거를 answer로 반환

=========================================================

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        ArrayList<Integer> al = new ArrayList<>();
        for(int i = 0; i < nums.length; i++) {
        	if(al.contains(nums[i])) continue;
        	else al.add(nums[i]);
        }
        
        answer = (nums.length / 2 > al.size() ? al.size() : nums.length / 2);
        
        return answer;
    }
}

ArrayList로 바꾼 코드

  • ArrayList에 nums 넣는데 중복되는 nums 값이 있다면 continue
  • nums의 인덱스 개수 / 2 와 ArrayList의 사이즈를 비교하여 더 작은거를 answer로 반환

===python code===

def solution(nums):
    answer = 0
    get = []
    half = len(nums) / 2
    for a in nums:
        if a in get:
            continue
        else:
            get.append(a)

        if len(get) > half:
            answer = half
        else:
            answer = len(get)
    return answer

다른 사람이 푼 우수한 코드

def solution(nums):
    return min(len(nums)/2, len(set(nums)))

0개의 댓글