본문 바로가기
후기 및 회고/코딩테스트 리뷰

[프로그래머스(programmers)] (2021 와디즈 코딩챌린지) 1번 : we make CODE #better

by 광진구뚝배기 2021. 8. 21.

알고리즘 문제 풀이 / 프로그래머스 (programmers)  - 코딩테스트 1번

 

 

2021년 8월 21일에 프로그래머스에서 열리는 와디즈 코딩챌린지 신청을 하고, 오늘 그 시험을 봤다. 경력 3년차 이상부터 뽑는 챌린지라 취준생인 나는 뽑히진 못하지만 그냥 신청해서 봤다,,ㅎ 문제는 총 3문제로 3시간 이내에 풀면 되는 시험이었는데 나에겐 나름 생각해야할 어려운 문제였어서 2시간 20분 정도 걸렸다. 오늘은 그 첫 문제 풀이를 해보려고 한다.

 

 

문제 설명

 

저작권의 문제로 문제설명은 생략하겠습니다.

 

 

문제 풀이

 

 

동 호수, 비밀번호를 hashmap에 넣는다.

s를 split으로 # 마다 끊어준다.

s가 hashmap에 동 호수와 일치하면 answer++을 해준다.

 

 

s가 무조건 동 호수, 비밀번호 순서가 아니기 때문에 이 문제는 더욱 간단해졌다. 무조건 처음 가져오는 것이 동이 맞는지 부터 확인하고, 맞다면 비밀번호가 일치하는지 확인하고 아니라면 다시 동이 맞는지를 확인하면 되는 간단한 문제였다.

public static int solution(int[][] passwords, String s) {
	int answer = 0;
	int size = passwords.length;
	HashMap<Integer, Integer> map = new HashMap<>();
		
	for(int i = 0; i < size; i++) {
		map.put(passwords[i][0], passwords[i][1]);
	}
			
	String[] anstr = s.split("#");
	int[] ans = Arrays.stream(anstr).mapToInt(Integer::parseInt).toArray();
	size = ans.length;
		
	for(int i = 0; i < size; i++) {
		if(map.containsKey(ans[i])) {
			if(i+1 < size && map.get(ans[i]).equals(ans[i+1])) {
				answer++;
				i++;
			}
		}
	}
		
	return answer;
}

 

반응형

댓글