basic/java 실습

day07 연습문제 - 다차원배열

못지(Motji) 2021. 4. 29. 23:04

*day06에 배웠던 배열 관련된 문제*복습*

문제1-1) arr이라는 이름의 하나의 배열에 사용자로부터 서로 다른 5개의 정수를 입력받아 저장해보고 출력

더보기

Scanner 불러오고 닫기는 입력문하면 기본이니까  따로 안넣음 왜냐,,,, 캡처할게 길어지기 때문에ㅎㅎㅎ!

 

문제1-2) 위에서 만든 배열 arr에 저장된 값들을 오름차순(작은것>큰것 순)으로 정렬하여 출력

풀이풀이

// 작은수부터 큰수까지 쭈루룩 정렬해야 한다? 값끼리 하나하나 전부 비교해야함! 그럼 뭐다? for문 돌려라x2
// why? 두번 돌리냐! 1-(2,3,4,5) 비교하고 2-(3,4,5) 비교해야 하니까 for문안에 for문을 써서 휘리릭 돌리면 됨
// 그리고 값을 비교해야한다! 그럼? *if*를 사용하여 작은 값을 비교하고 넣고 비교하고 넣고 하면 끝!

 

문제1-3 정수 한개를 더 입력받아 저장하기
// 입력받은 정수는 기존 배열의 마지막 데이터 다음방에 저장되어야한다.
// 단, 배열은 문법적으로 방크기 수정이 불가하고,
// 데이터 하나더 추가되려면 방이 6개여야한다.

처음에 풀이 할때 잘못했던 오류!

6개짜리 새로운 tmp 배열은 만들어 arr 값을 넣어놓고 6번째 방에 새로운 값을 넣으려고 했음

tmp = arr 이건 주소값을 같이 공유하는것 그래서 새로운 6개 방은 사라지고

arr의 5개의 방의 주소값이 쏙 들어감.

값을 넣으려면 index를 지정하여 잘 넣어줘야 함

 

문제2-1 게임랭킹보드. 5개의 데이터를 저장할 수 있는 users와 scores라는
// 이름의 배열이 있고, users 배열에는 유저네임, scores 배열에는
// 게임점수를 입력받아 저장한다.
// 단, 유저 네임과 게임점수는 배열 인덱스상 서로 일치한다.
// ex) users 첫번째방 유저의 점수는 scores첫번째 방에 저장

문제2-2 위 저장된 uses와 scores를 아래와 같은 형태로 출력
콘솔출력예)
user_name score
___________________
  피카츄    87
  파이리    24
...

풀이풀이

유저 이름 넣을 배열, 점수 넣을 배열 각각 생성하여

for문에 넣고 같이 돌려주면 됨. 이정도는 이제 쭉쭉 코딩ㅎㅎ

 

// 문제2-3 두번째 유저의 점수와 세번째 유저의 점수가 서로 바뀌어서 저장이
//  되었다고 합니다. 두개의 점수만 교환해주세요.

풀이풀이값 잠깐 넣어 놓을 변수 하나 만들어서 값 교환~!


문제2-4 점수가 높은순으로 출력되는 게임 랭킹보드를 출력하세요
// 랭킹 보드는 1위~5위까지
rank user_name score
_________________________
1      피카츄     87
2      파이리     24
...

풀이풀이.

높은순으로 출력해라 > 값 하나하나 다 비교하기 > 이중for문 으로

비교한 값 자리 교환 > if로

입력받고 값넣고>for 값비교해서 자리 교환>for

while loop로 같이 묶어줘서 깔꼼하게

 

문제2-5 또한명의 유저가 게임을 끝냈습니다.
// 점수와 유저네임을 입력받고, 기존의 게임랭킹보드를 업데이트해
// 출력해주세요. 이때 입력받은 새로운 유저의 데이터는
// 기존의 데이터에 추가되어야함 (1-3 문제 참고)
// 업데이트 방법 : 랭킹은 5위까지만 출력.
// 새로 입력받은 유저의 점수가 5위보다 낮으면 출력하지 않음
// 순위권 안에 들어오는 점수면 순위에 맞춰 출력

 

*day07 오늘 배운 다차열배열 문제!!*

 

문제1. 아래와 같은 형태의 정방배열을 만들어 값을 저장하고 출력해보세요. 
      /*
         10   20   30
         40   50   60
         70   80   90
      */

문제2. int형 3행 2열의 정방배열을 만들고

//      각 방에 정수를 입력받아 저장하고 출력하세요. 

문제3. 아래와 같은 형태의 비정방배열을 만들어

//      아래와 동일하게 값을 저장하고 출력하세요.
    /*
       10   11   12
       20   21
       30   31   32
       40   41
    */

문제4. 한층에 5호씩 있는 3층짜리 아파트가 있다. > 5행 3열
1) 배열로 만들어서 각 호마다 관리비를 입력받고, 전체 출력해보세요.

2) 층별 관리비 평균을 구해서 출력해보세요.

3) 전체 관리비 평균을 구해서 출력해보세요.
4) 103호와 203호의 관리비가 서로 바뀌었다고해요, 교환해주세요. 
5) 전체 관리비 평균보다 적게 사용한 호수들을 출력해보세요. 
6) 관리비를 가장 적게 사용한 호수와 가장 많이 사용한 호수를 출력해보세요.
7) 심화: 관리비 적게 나온 순으로 정렬해보세요.