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
- sample
- Client
- 코딩테스트
- spring boot
- docker
- Java
- Linux
- SSL
- Jenkins
- Git
- ssh
- vagrant
- 프로그래머스
- spring
- TypeScript
- TLS
- EC2
- centos7
- Hibernate
- mariadb
- WebHook
- AWS
- github
- window
- db
- 토비의스프링
- Spring Legacy Project
- DISTINCT
- jdbc
- 책 정리
Archives
- Today
- Total
Woopii Vyeolog
[프로그래머스 코딩테스트 연습] 해시 1 본문
(해당 테스트 링크 : https://programmers.co.kr/learn/courses/30/parts/12077)
해시란?
해시(hash)란 데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 자료구조이다.
이 때 매핑 전 원래 데이터의 값을 키(key), 매핑 후 데이터의 값을 해시값(hash value), 매핑하는 과정 자체를 해싱(hashing)라고 한다.
자료구조란?
자료구조(資料構造, 영어: data structure)는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다.
더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다.
신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 한다. 효과적으로 설계된 자료구조는 실행시간 혹은 메모리 용량과 같은 자원을 최소한으로 사용하면서 연산을 수행하도록 해준다.
1번 문제 : 완주하지 못한 선수
문제 설명
내가 한 풀이(답은 나오지만 hash자료구조를 안썻기 때문에 오답임)
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
//배열을 정렬
Arrays.sort(participant);
Arrays.sort(completion);
//participant배열의 마지막 값이 아닐 경우
for(int i = 0; i<completion.length;i++){
if(!participant[i].equals(completion[i])){
answer = participant[i];
break;
}
}
//participant배열의 마지막 값일 경우
if(answer.equals("")){
answer = participant[participant.length-1];
}
return answer;
}
}
다른 사람꺼 참고한 풀이(HashMap 사용)
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Map<String, Integer> hm = new HashMap<String, Integer>();
//참가자 이름을 Map에 넣기(key : 참가자 이름, value : 해당 이름의 인원 수)
//getOrDefault메소드로 중복 입력(값이 들어가면 vlaue는 1 중복 수 만큼 +1)
for(String name: participant){
hm.put(name,hm.getOrDefault(name,0)+1);
}
//완주자 만큼 인원수를 빼줌
for(String name: completion){
hm.put(name,hm.get(name)-1);
}
//완주 못한 선수 이름을 추출한다.
for(Map.Entry<String,Integer> playerMap: hm.entrySet()){
if(playerMap.getValue() == 1){
answer = playerMap.getKey();
}
}
return answer;
}
}
'코딩테스트 연습' 카테고리의 다른 글
[프로그래머스] 수박수박수박수박수박수? (0) | 2022.04.11 |
---|---|
[프로그래머스] 폰켓몬 (0) | 2022.04.11 |
[프로그래머스 코딩테스트 연습] 해시 3 (0) | 2020.04.25 |
[프로그래머스 코딩테스트 연습] 해시 2 (0) | 2020.04.22 |
코딩테스트 시작하기 (0) | 2020.04.20 |
Comments