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
- 혁신의기술2:신뢰의미래 블록체인을 만나다
- Entity
- attribute
- Node
- 디스크블록할당
- 블록체인강의
- 자바스크립트
- StringTokenizer
- 블록체인
- 자바문자열구분
- stringreader
- 시스템프로그래밍
- 단국대학교 k-mooc
- biginteger사용법
- 컴파일시스템
- national instruments
- StringBuilder
- K-MOOC 단국대학교 홍보단
- 자바입력받기
- 머신러닝
- 우선순위큐
- 오블완
- CSS 기초
- 블록체인 강의
- html기초
- 티스토리챌린지
- K-MOOC
- 해시
- 2차원배열정렬
- 딥러닝
Archives
- Today
- Total
열정 실천
백준 3230번 :: 실버5 - 금메달, 은메달, 동메달은 누가? 본문
728x90
잠깐 내려놓았던 자바와 알고리즘 문제풀기 시작한 지 3일차.....
첫째, 둘째 날은 자바 기억하는거에 집중하기 위해 브론즈 5문제로 워밍업하고
오늘은 실버 5문제 중에 그래도 정답률 높은 걸로 골랐다.,,
2시간 꼬박 숨만쉬고 문제풀어서 성공...!
문제를 읽고 난감했던 부분은 선수 번호에 대한 등수를 저장해야하는데 등수가 계속 뒤로 밀리는 시스템......?! 머리로는 해결이 안돼서 차근차근 숫자 적으면서 하니 다행히 15분 안에 머릿속으로 알고리즘은 돌아갔던 것 같다. 그치만 코딩하는 과정에 인덱스랑 선수 번호랑 for문의 i랑 계속해서 바뀌는 선수 등수랑 너무 많은 숫자 배열에 머리가 꼬였찌만...! 딱 집에 가고 싶었던 시간에 문제 해결..ㅎㅎ 근데 효율적인 코드는 아닌 것 같아서 친구들이랑 코드리뷰하는 작업이 필요하다고 느껴졌다. 이번에 알고리즘 스터디 떨어지면 내가 직접 친구들 모아서 만들어야겠따!!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class beakjoon_3230 {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
//1차 경기 - 총 n명의 선수
//배열의 인덱스는 등수를 의미
//등수랑 인덱스랑 같게 하기 위해 0번째 인덱스는 안쓰고 배열의 크기 1+
int[] rank1 = new int[n+1];
//현재 선수의 등수를 담을 변수
int per_rank = 0;
for(int i =1; i<=n; i++){ //여기서 i는 선수 번호
per_rank = Integer.parseInt(br.readLine());
if(rank1[per_rank]!=0){ //배열의 기본값은 0
for(int j = i; j>per_rank; j--){
rank1[j] = rank1[j-1]; // i선수 등수부터 n등까지 뒤로 미루기
}
}
rank1[per_rank] = i;
}
//2차 경기 : 총 m명 선수 (1~m등까지)
//rank1과 동일 : 인덱스는 등수, 담길 값은 선수번호
int[] rank2 = new int[m+1];
int m2 = m; //for문에서 m을 써야해서 저장
for(int i=1; i<=m2; i++,m--) { //rank1[m]은 i번째 경기의 선수번호
per_rank = Integer.parseInt(br.readLine());
if (rank2[per_rank] != 0) {
for (int j = i; j > per_rank; j--) {
rank2[j] = rank2[j - 1];
}
}
rank2[per_rank] = rank1[m];
}
System.out.println(rank2[1]+"\n"+rank2[2]+"\n"+rank2[3]);
}
}
728x90
'개발 공부 > 코딩 문제풀이' 카테고리의 다른 글
[JAVA] 프로그래머스 42578 의상 - 해시 자료구조, 조합 풀이 (0) | 2024.09.04 |
---|---|
[JAVA] 프로그래머스 42577 전화번호 목록 (1) | 2024.09.03 |
백준 1316번 - 그룹 단어 체커 [JAVA(자바) 문제풀이] (0) | 2022.09.11 |
백준 1094 - 막대기 [JAVA 문제풀이] (0) | 2022.09.10 |
[java] 백준 - 1546 평균 (do it 알고리즘 002) (0) | 2022.07.22 |