● PRACTICE 연습문제
- 수업시간에 푼 Array(배열) 관련 연습문제 모음
위쪽은 내가 해본 코드 아래쪽은 강사님 코드 (비슷한 경우에는 한 가지만 적어둠)
Q1) 성적프로그램
- 5명의 학생을 대상으로 평균, 등수, 과락, 평균 10점당 ☆ 한개씩, 장학생을 구한 후
결과값을 표작성해서 id=demo에 출력하시오
- 평균 95점 이상이면 "장학생"
- 평균 70점 이상이면 합격, 아니면 "불합격"
단, 국영수 세 과목 중에서 한 과목이라도 40점 미만이면 "재시험(과락)"
<body>
<div id="demo"></div>
<script>
var uname = ["황대헌", "이준서", "김동욱", "곽윤기", "박장혁"];
var kor = [100, 50, 95, 80, 60];
var eng = [100, 55, 95, 85, 40];
var mat = [100, 60, 35, 90, 30];
var size = uname.length;
//1) 평균구하기
var aver=[];
for(i=0; i<=4; i++){
aver[i]=parseInt((kor[i]+eng[i]+mat[i])/3);
}//for end
//2) 출력하기
var result=""; //결과값
result += "<table border='1'>";
result += "<tr>";
result += " <th>이름</th>";
result += " <th>국어</th>";
result += " <th>영어</th>";
result += " <th>수학</th>";
result += " <th>평균</th>";
result += " <th>등수</th>";
result += " <th>결과</th>";
result += "</tr>";
//3) 5명의 성적을 출력하기
for(i=0; i<5; i++){
result += "<tr>";
result += " <td>"+uname[i]+"</td>";
result += " <td>"+kor[i]+"</td>";
result += " <td>"+eng[i]+"</td>";
result += " <td>"+mat[i]+"</td>";
result += " <td>"+parseInt(aver[i])+"</td>";
result += " <td>"; //등수 start
//4) 등수 구하기
var rank = [1, 1, 1, 1, 1];
for(j=0; j<size; j++){
if(aver[i]<aver[j]){
rank[i]++;
}//if end
}//for end
result += rank[i];
result += " </td>"; //등수 end
result += " <td>"; //결과 start
// 5) 과락 (합격, 재시험, 불합격)
if(aver[i]>=70){
if(kor[i]>=40 && eng[i]>=40 && mat[i]>=40){
result += "합격";
}else{
result += "재시험";
}//if end
}else{
result += "불합격";
}//if end
// 6) 평균 10점당 *한개씩
for(star=1; star<=parseInt(aver[i]/10); star++){
result += "*";
}//for end
// 7) 평균 95점 이상이면 장학생 (강사님 코드)
if(aver[i]>=95){
result +="<span style='color:red; font-weight:bold'>장학생</span>";
}//if end
result +=" </td>"; //결과 end
result +="</tr>";
}//for end
result += "</table>";
document.getElementById("demo").innerHTML=result;
</script>
</body>
↓
Q2) num배열 요소의 전체 합을 구하시오
Q3) num배열 요소 중 음수의 개수를 구하시오
Q4) num배열 요소 중 최댓값, 최솟값을 각각 구하시오
Q5) num[4] 요소의 등수를 구하시오 (클수록 순위가 높다)
Q6) num배열 요소의 각각의 등수를 모두 구하시오
var num=[7, 8, -9, -5, 6];
var size=num.length;
//Q2
var sum = 0; //배열 요소 전체의 합
for(i=0; i<size; i++){
sum=sum+num[i];
}//for end
//Q3
var neg = 0; //음수의 개수
for(i=0; i<size; i++){
if(num[i]<0){
neg = neg + 1;
}//if end
}//for end
//Q4 방법1(if문 활용)
var max = num[0]; //최댓값
var min = num[0]; //최솟값
for(i=0; i<size; i++){
if(num[i] >= max){
max = num[i];
}//if end
if(num[i] <= min){
min = num[i];
}//if end
}//for end
//Q4 방법2(삼항연산자 활용)
for(i=0; i<size; i++){
max<num[i] ? max=num[i] : max=max;
min>num[i] ? min=num[i] : min=min;
}//for end
//Q4 방법3(sort 활용)
var newNum=num.sort(function(a, b){return b - a});
document.write("최대값: "+newNum[0]+", ");
document.write("최소값: "+newNum[size-1]+", ");
//Q5
var rank=1; //등수
var j = 0;
while(j<size-1){
if(num[4] < num[j]){
place ++;
}//if end
j++;
}//while end
//Q6
var rank=[1, 1, 1, 1, 1]; //등수 결과값 저장
for(i=0; i<size; i++){
for(j=0; j<size; j++){
if(num[i] < num[j]){
rank[i]++;
}//if end
}//for end
document.write("num[" + index + "] 요소의 등수: " + rank[index] +"등<br>");
}//for end
Q7) 요일 구하는 프로그램
- 서기 1년 1월 1일 ~ 서기 2022년 3월 4일 => 총 날 수 (대략 738,030일)
총 날 수 % 7 | 나머지 0일 | 일요일 |
나머지 1일 | 월요일 | |
나머지 2일 | 화요일 | |
나머지 3일 | 수요일 | |
나머지 4일 | 목요일 | |
나머지 5일 | 금요일 | |
나머지 6일 | 토요일 |
//Q7
var cYear=2022, cMonth=3, cDate=4;
//1단계: 전년(2021년)까지 총날수 구하기 (평년 +365일 / 윤년 +366일)
var days=0; //총날수
for(y=1; y<cYear; y++){
if((y%4==0 && y%100!=0) || (y%4==0 && y%100==0 && y%400==0)){
days+=366;
}else{
days+=365;
}//if end
}//for end
//1단계 강사님 코드
var hap=0; //총날수
for(year=1; year<cYear; year=year+1){
if(year%4==0 && year%100!=0 || year%400==0){ //윤년 구하는 공식
hap = hap +366;
}else{
hap = hap +365;
}//if end
}//for end
//2단계: 전원(2월)까지 총날수 구하기
//1월, 3월, 5월, 7월, 8월, 10월, 12월 +=31
//4월, 6월, 9월, 11월 +=30
//2월 평년이면 +=28 윤년이면 +=29
var m31 = [1, 3, 5, 7, 8, 10, 12];
var m30 = [4, 6, 9, 11];
for(m=1; m<cMonth; m++){
if(m31.includes(m)){
days= days +31;
}else if(m30.includes(m)){
days= days +30;
}else{
if(cYear%4==0 && cYear%100!=0 || cYear%400==0){
days= days +29;
}else{
days= days +28;
}
}//if end
}//for end
//3단계: 오늘까지 총날수 구하기
days = days + cDate;
//2,3단계 강사님 코드
var mon=[0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
//0을 넣으면 index를 count하기 편하다
if(cYear%4==0 && cYear%100!=0 || cYear%400==0){
mon[2]=29; //윤년이면 2월 월수를 29일로 바꿔줌
}//if end
for(m=1; m<cMonth; m++){
hap=hap+mon[m];
}//for end
hap=hap+cDate;
//4단계: 요일출력
switch(dyas%7){
case 0: document.write("일요일"); break;
case 1: document.write("월요일"); break;
case 2: document.write("화요일"); break;
case 3: document.write("수요일"); break;
case 4: document.write("목요일"); break;
case 5: document.write("금요일"); break;
case 6: document.write("토요일"); break;
}//switch end
Q8) 년도 cYear의 띠를 출력하시오
- 년도를 12로 나눴을 때 나머지가 0이면 원숭이띠, 1이면 닭띠...
//Q8
switch(cYear % 12){
case 4: document.write("똘기"); break;
case 5: document.write("떵이"); break;
case 6: document.write("호치"); break;
case 7: document.write("새초미"); break;
case 8: document.write("드라고"); break;
case 9: document.write("요롱이"); break;
case 10: document.write("마초"); break;
case 11: document.write("미미"); break;
case 0: document.write("몽치"); break;
case 1: document.write("키키"); break;
case 2: document.write("강다리"); break;
case 3: document.write("찡찡이"); break;
}//switch end
//강사님코드
var animal=["원숭이", "닭", "개", "돼지", "쥐", "소", "호랑이", "토끼", "용", "뱀", "말", "양"];
document.write("띠: " + animal[cYear%12]);
Q9) 로또번호 프로그램
- 로또번호 1~45사이의 수를 서로 겹치지 않게 6개 발생시키기
- 오름차순으로 정렬해서 id=print에 출력하시오
<div id="print"></div>
<script>
var lotto = [];
lotto[0] = parseInt((Math.random()*45)+1);
var i=1;
while(i<6){
lotto[i] = parseInt((Math.random()*45)+1);
j=i-1;
while(j>=0){
if(lotto[i]!=lotto[j]){
j--;
}else{
lotto[i] = parseInt((Math.random()*45)+1);
}//if end
}//while end
i++;
}//while end
lotto.sort(function(a, b){return a - b});
document.getElementById("print").innerHTML=lotto;
//강사님코드
var lotto = [];
for(i=0; i<6; i++){
lotto2[i]=parseInt((Math.random()*45)+1);
for(j=0; j<i; j++){
if(lotto2[i]==lotto2[j]){
i--;
break;
}//if end
}//for end
}//for end
lotto2.sort(function(a, b){return a - b});
document.getElementById("print").innerHTML=lotto2;
</script>
'Frontend > JavaScript' 카테고리의 다른 글
15. JavaScript Date 객체 (디지털 시계 만들기) (0) | 2022.05.04 |
---|---|
14. JavaScript 함수 (Function: 사용자 정의 함수, 변수의 유효범위) (0) | 2022.05.03 |
12. JavaScript 배열(Array) (0) | 2022.05.02 |
11. JavaScript 연습문제 모음 (이중 반복문, 조건문) (0) | 2022.04.29 |
10. JavaScript 연습문제 모음 (조건문, 반복문) (0) | 2022.04.29 |
댓글