개발일기

JAVA Study 1 ~ 3주차 요약정리 [정렬] 본문

일상

JAVA Study 1 ~ 3주차 요약정리 [정렬]

한민기 2022. 7. 14. 22:19
반응형

@ 백준

# 1. 주몽

단순 배열에 반복문을 사용하여 문제를 해결 할 수 있다. 

 

solved.ac 기준 정렬로 분류되어 있지만 단순이 for문과 입력받은 수를 배열에 넣을 수 있으면 해결할 수 있는 문제

 

https://www.acmicpc.net/problem/1940

 

1940번: 주몽

첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고

www.acmicpc.net

 

# 2. ATM

해당 문제도 정렬로 분류 되어있지만 그리디 알고리즘에 대한 비중이 조금더 큰 문제이다.

 

그리디로 문제를 접근하면 Sort를 어떤 방식으로 해야 문제를 해결할 수 있는지 알 수 있다.

 

https://www.acmicpc.net/problem/11399

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

 

# 3. 시간 관리

Arrays.sort(work, (o1, o2) -> o2[1] - o1[1]);

위와 같이 람다식을 통해 sort를 진행할 수 있어야 해결할 수 있는 문제이다.

 

람다식을 통해 sort의 조건을 넣는 방법은 많은 코딩테스트에서도 쓰이기 때문에 중요하다고 생각한다.

 

람다식을 쓰는 문제 중 가장 쉬웠다고 생각되는 문제이다.

 

https://www.acmicpc.net/problem/1263

 

1263번: 시간 관리

진영이는 캠프 조교를 온 후 효율적으로 시간 관리를 해야 한다는 것을 깨달았다. 진영이는 하루에 해야 할 일이 총 N개가 있고 이 일들을 편하게 1번부터 N번까지 차례대로 번호를 붙였다. 진영

www.acmicpc.net

 

 

# 4. 올림픽

Arrays.sort(arrs, (o1, o2) -> {
	if(o1[1] == o2[1]){
		if(o1[2] == o2[2]){
			return Integer.compare(o1[3], o2[3]);
		}
		return Integer.compare(o1[2], o2[2]);
	}
	else{
		return Integer.compare(o1[1], o2[1]);
	}
});

3번 문제와 동일하게 sort를 람다식으로 추가 조건을 입혀 정렬하는 방법을 알면 쉽게 해결할 수 있는 문제이다.

 

https://www.acmicpc.net/problem/8979

 

8979번: 올림픽

입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각

www.acmicpc.net

 

 

# 5. 점수 계산

점수를 큰 순서대로 정렬한 후 앞에서 5개의 합을 구하면 되는 쉬운 문제이지만 해당 점수가 원래 몇번 째 index에 있는지 까지 알아야 하는 문제이다. 

 

점수를 입력 받을 때 index까지 함께 2차원 배열로 저장 한 후 람다식을 통해 점수만으로 정렬을 진행하면 쉽게 index와 제일 높은 점수 5개를 구할 수 있다.

 

https://www.acmicpc.net/problem/8979

 

8979번: 올림픽

입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각

www.acmicpc.net

 

 

# 6. 나이순 정렬

5번 문제와 비슷한 유형이다. 이름과 나이만 입력을 받지만 배열을 하나더 추가하여 가입 순 까지 세팅을 한 후 

람다식을 통해 조건에 맞게 정렬을 진행한다.

 

https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

 

 

# 7. 암호 해독

개인적으로 가장 까다로웠던 문제이며 스터디 진행 시간에도 다시한번 다같이 풀어봤던 문제이다.

키를 정렬했을 때 해당 키의 index를 관리하는 배열을 추가적으로 만든다는 아이디어가 필요하다.

위의 유형의 문제들과 달리 정렬을 람다식을 통해 진행하는 문제가 아닌 정렬의 원리를 알아야 풀 수 있는 문제이다.

 

https://www.acmicpc.net/problem/2149

 

2149번: 암호 해독

어떤 문장을 키를 이용하여 다음과 같이 암호화하려 한다. 암호화하기 전의 문장을 평문이라 하며, 암호화 된 문장은 암호문이라고 한다. 키, 평문, 암호문은 모두 영어 대문자로 된 공백 없는

www.acmicpc.net

 

 

# 8. 시리얼 번호

해당 문제 역시 sort에 람다식을 이용하여 문제 조건에 맞게 정렬을 하면 된다.

 

하지만 추가적으로 아스키 코드에 대한 이해도가 있어야 문제를 해결 할 수 있다.

 

https://www.acmicpc.net/problem/1431

 

1431번: 시리얼 번호

첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어

www.acmicpc.net

 

 

@ 프로그래머스

# 9. K 번째 수

문제의 조건대로 배열을 잘라 정렬만 하면 되는 간단한 문제이다.

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

# 10. 가장 큰수

백준의 문제 유형과 비슷하게 sort에 람다식을 사용하여 문제를 해결하면 된다. 이때 문자열 2개를 더해 비교하는 방법을 추가적으로 사용한다. 문자열 비교에 대한 이해도가 있으면 쉽게 접근할 수 있다.

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

# 11. H-Index

프로그래머스에서 정렬로 분류되어있지만 정렬보다는 문제 이해만 하면 쉽게 해결할 수 있는 문제였다.

살짝 말장난이 섞여 있는 듯한 느낌을 받는 문제다.

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

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

 

 

 

모든 문제는 스터디원과 함께 푼 문제들입니다. 풀이는 아래 링크에 존재합니다.

 

https://github.com/Hmgi/Programmers-Study

 

GitHub - Hmgi/Programmers-Study: 알고리즘과 스프링 스터디

알고리즘과 스프링 스터디. Contribute to Hmgi/Programmers-Study development by creating an account on GitHub.

github.com

 

반응형
Comments