코테/프로그래머스

[자바 Lv0] 전국 대회 선발 고사

2023. 7. 30. 18:40
목차
  1. 문제 설명
  2. 문제 해석
  3. * 구현 로직 *
  4. 코드

 

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

 

프로그래머스

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

programmers.co.kr

문제 설명

문제 해석

rank배열에 각 등수가 저장되어있고 등수가 높은 3명을 전국 대회에 참석 시키려고 한다.

이때 attendatnce배열에 전국 대회에 참석 할 수 있는 여부가 저장되어있다.

예를 들어 1,2,3,4,5등이 있을 경우 1등이 false이면 2등, 3등, 4등이 전국 대회에 참석할 수 있는 구조이다.

이때 2등, 3등, 4등의 rank 배열에서 인덱스 값을 이용하여 10000 x 2등의 인덱스 + 100 x 3등의 인덱스 + 1 x 4등의 인덱스를 더한 값을 return한다.

 

* 구현 로직 *

1. MapA에 각 등수와 참석 여부를 저장한다.

2. MapB와 각 등수와 rank 배열의 인덱스 값을 저장한다.

3. MapA를 돌면서 true인 key값이 존재 할 때 MapB에서 인덱스 값을 찾아 10의 4승, 2승, 0승 차례대로 곱한 뒤 더한다.

코드

import java.util.*;
class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        int answer = 0;
        Map<Integer, Boolean> checkAttendance = new HashMap<>();
        
        for (int i = 0 ; i < rank.length; i++) {
            checkAttendance.put(rank[i], attendance[i]);
        }
        
        Map<Integer, Integer> checkIndex = new HashMap<>();
        for (int i = 0; i < attendance.length; i++) {
            checkIndex.put(rank[i], i);
        }
        
        int cnt = 4;
        for (Integer key : checkAttendance.keySet()){
            if(checkAttendance.get(key)) {
                answer += checkIndex.get(key) * (int)Math.pow(10, cnt);
                cnt -= 2;
            }
        }   
        return answer;
    }
}

-> Map에 대입할 때 key값의 오름차순으로 자동 정렬 되는건지 확인하고 제대로 숙지해놔야겠다.

 

 

다른 사람들의 풀이를 확인 후

우선순위 큐를 이용한 멋진 코드 기록

import java.util.PriorityQueue;

class Solution {
    public int solution(int[] rank, boolean[] attendance) {

        PriorityQueue<Integer> que = new PriorityQueue<>((a, b) -> rank[a] - rank[b]);
        for (int i = 0; i < attendance.length; i++) {
            if (attendance[i])
                que.add(i);
        }

        return que.poll() * 10000 + que.poll() * 100 + que.poll();
    }
}

 

 

 

반응형

'코테 > 프로그래머스' 카테고리의 다른 글

[프로그래머스 Lv2] 순위 검색  (0) 2023.11.23
[프로그래머스 Lv2] 행렬 테두리 회전하기  (1) 2023.11.22
[프로그래머스 Lv0] 자바 안전지대  (0) 2023.07.29
[프로그래머스 Lv.1] 개인정보 수집 유효기간  (0) 2023.06.13
[프로그래머스 Lv1] 같은 숫자는 싫어!  (0) 2023.06.13
  1. 문제 설명
  2. 문제 해석
  3. * 구현 로직 *
  4. 코드
'코테/프로그래머스' 카테고리의 다른 글
  • [프로그래머스 Lv2] 순위 검색
  • [프로그래머스 Lv2] 행렬 테두리 회전하기
  • [프로그래머스 Lv0] 자바 안전지대
  • [프로그래머스 Lv.1] 개인정보 수집 유효기간
three von
three von
어려워 보이는 프로그래밍 언어를 쉽게 정복하는 블로그
반응형
three von
LangEASY : 프로그래밍 언어를 쉽게 정복하는 공간
three von
전체
오늘
어제
  • 분류 전체보기 (89)
    • BackEnd (5)
    • JAVA (5)
      • 기초개념 (5)
    • 자료구조 & 알고리즘 (7)
      • 기초수학 (0)
      • 선형 자료구조 (4)
      • 비선형 자료구조 (1)
      • 알고리즘 (1)
    • CS (18)
      • 컴퓨터구조 (0)
      • 운영체제 (3)
      • 시스템 소프트웨어 (0)
      • 네트워크 (4)
      • 디자인패턴 (10)
    • 데이터베이스 (4)
    • Spring (4)
    • Project (2)
      • 팀프로젝트 (1)
      • 토이프로젝트 (1)
    • 회고 (0)
    • Git&Github (8)
    • IntelliJ (5)
    • 코테 (16)
      • 프로그래머스 (10)
      • 백준 (6)
    • BookStudy (12)
      • 스프링 부트 핵심 가이드 (12)
    • C++ (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백엔드스쿨
  • 백엔드 스쿨
  • 백엔드
  • windowcmd창
  • 자바 선형자료구조
  • 자바 자바해시맵
  • vi/vim에디터사용
  • 제로베이스백엔드스쿨미니과제
  • 명령어변환
  • 제로베이스
  • InteliJ에서 gitbash사용
  • spring
  • java heap 자료구조
  • vi/vim
  • LiveTemplate사용
  • githubTest
  • heap 자료구조
  • 자바 자료구조 힙
  • 개발자
  • 코테
  • github
  • Java
  • github이슈관리
  • IntelliJ 자동화
  • 제로베이스백엔드스쿨
  • 윈도우에서 리눅스 명령어
  • 깃 이슈관리
  • 리눅스 명령어 윈도우 cmd창에서 가능
  • 백엔드공부
  • 인텔리제이에서 gitbash로 vi vim 에디터 사용하는법

최근 댓글

최근 글

hELLO · Designed By 정상우.
three von
[자바 Lv0] 전국 대회 선발 고사
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.