참치코더의 꿈 메모장

알고리즘 73일차 - 프로그래머스 기출 문제(JAVA) / 체육복 본문

잡다한 웹지식

알고리즘 73일차 - 프로그래머스 기출 문제(JAVA) / 체육복

참치깡 2025. 7. 15. 14:04
728x90

전체 코드 부분

 

- 매개변수 로 받은 n은 총인원수, 배열 lost는 체육복을 잃어버린 학생 번호, reserve는 체육복을 빌려줄수 있는 학생이라고

  했을때 체육복을 빌려서 총 수업을 받을 수 있는 학생수는 몇명인지 계산하는 문제이다.

 

- List로 계산하기 위해 각각 배열들을 List 컬렉션으로 바꿔 집어넣어 준 다음  여벌 체육복을 가져온 학생이 도난당했을때

  for in문을 사용하여  임시 list 컬랙션에다가 해당하는 값을 집어넣어 주었다.

 

- 그 후 해당하는 imsi 컬랙션에 해당하는 학생은 체육복을 빌려줄 수 도 내가 수업을 듣지 못하는 것도 아니니 양 List에서 

  해당하는 학생들을 제거해 주었다. 

- 다음 정렬을 하지 않았을때 순서가 들쭉날쭉 해져서 이어지는 체육복을 빌려주는 쿼리에서 오류가 날 가능성이 있으므로 

  해당하는 reserve와 lost의 리스트를 정렬을 해주었다.

 

- 이렇게 한다면 순수하게 빌릴 학생과 빌려줄 학생만 남게 되는데 체육복이 없는 학생의 번호 위아래로 밖에 빌리지를 

  못하므로 조건문을 사용하여 빌려줄 해당 학생이 존재한다면 해당 학생이 체육복을 빌려줌으로써 해당하는 번호의

  lost_list의 값을 제거해주었다. 

 

- 최종적으로 lost_list에 남는 인원은 체육복을 빌리지 못해 수업을 듣지 못하는 인원만 남게 되므로 해당하는 인원을 

  총 인원인 n 값에서 lost_list( ) 인원 수 만큼 제거한다면 총 수업을 받을 수 있는 인원만 구할 수 있다. ^^

 

* Hash Set을 이용한다면 더욱 효율좋은 프로그램이 된다던데, List 위주로 코드를 짜다보니 코드가 길어졌다.

  다음 알고리즘은 Hash 공부한뒤  Hash위주의 Collection 문제풀이를 해봐야 겠다..... ㅎㅎ

 

https://school.programmers.co.kr/questions/89399

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

간만에 서울 친구집 가는길

728x90
Comments