코딩/1-JavaScript

C0802보통완전탐색과데이터

tree0505 2025. 5. 9. 10:09
반응형
  • 예를 들어 학생 관리 (고등학생)
  • 번호. 나이. 이름. 주소. 학년 
  • 국어 수학 영어 과학 => 1학기 중간. 1학기 기말 . 2학기 중간. 2학기 기말 
  • 국어 수학 영어 과학 => 1학기 중간. 1학기 기말 . 2학기 중간. 2학기 기말 
  • 국어 수학 영어 과학 => 1학기 중간. 1학기 기말 . 2학기 중간. 2학기 기말 
  • 1001 17 김철수 서울시 영등포 어쩌구 저쩌구 ㅋㅋㅋ 1학년 1반  김포고등학교  10 20 30 40  1학기 중간 
  • 1001 17 김철수 서울시 영등포 어쩌구 저쩌구 ㅋㅋㅋ 1학년 1반  김포고등학교  10 20 30 40  1학기 중간 
  • 1001 17 김철수 서울시 영등포 어쩌구 저쩌구 ㅋㅋㅋ 1학년 1반  김포고등학교  10 20 30 40  1학기 중간 
  • 1001 17 김철수 서울시 영등포 어쩌구 저쩌구 ㅋㅋㅋ 1학년 1반  김포고등학교  10 20 30 40  1학기 중간 
  • 1001 17 김철수 서울시 영등포 어쩌구 저쩌구 ㅋㅋㅋ 1학년 1반  김포고등학교  10 20 30 40  1학기 중간 
  • 1001 17 김철수 서울시 영등포 어쩌구 저쩌구 ㅋㅋㅋ 1학년 1반  김포고등학교  10 20 30 40  1학기 중간 
  • 이렇게 찾으면. for 한번이면 찾는다. 이건 좋다. 
  • 위의 처럼 하면 데이터 낭비가 심하다. 

  • 위의 처럼 코딩을 안짠다.
  • 밑에꺼가 완전탐색이다. 
  • 왜 하는지를 알아야 한다. 상황을 이해 해야 한다.  
    • student table 
      • 1001 17 김철수 서울시 영등포 어쩌구 저쩌구 ㅋㅋㅋ 1학년 1반  김포고등학교
      • 1002 17 김철수 서울시 영등포 어쩌구 저쩌구 ㅋㅋㅋ 1학년 1반  김포고등학교
      • 1003 17 김철수 서울시 영등포 어쩌구 저쩌구 ㅋㅋㅋ 1학년 1반  김포고등학교
      • 1004 17 김철수 서울시 영등포 어쩌구 저쩌구 ㅋㅋㅋ 1학년 1반  김포고등학교
      • 이건 반복되기 때문에. 
      • 테이블로 나눈다. 
    • score table
      • 1001번으로 위의 학생을 찾는다.  
      • 1001 10 20 30 40 1학기 중간 
      • 1001 10 20 30 40 1학기 중간 
      • 1001 10 20 30 40 1학기 중간 
      • 1001 10 20 30 40 1학기 중간 
      • 1001 10 20 30 40 1학기 중간 
      • 1001 10 20 30 40 1학기 중간 
      • 1001 10 20 30 40 1학기 중간 
      • 1001 10 20 30 40 1학기 중간
      • 1001 10 20 30 40 1학기 중간 
      • 1001 10 20 30 40 1학기 중간
    • for for 2개로 찾아야 한다.
    • 테이블이 2개라서. 
  • for for를 완전히 익혀야 한다. 
  • 데이터를 손해 없이 

  • C0802보통완전탐색과데이터

C0802개념01.html


  • C0802보통완전탐색과데이터_문제

C0802문제01.html


  • 내가 잘못 이해함 
  • for (let i = 0; i<order.length; i++) 
    • 즉 i로 돌릴때. 
    • 출력도 i로 해야 한다. 
  • for( let j = 0; j <item.length; j++) 
    • item [ j ]로 출력을 했지만 

 

  • for for은 곱하기다. 
  • 즉 order ( 7개) * item ( 4개 ) 
    • 조건을 걸지 않으면 28번이 나와야 한다.
    • 즉 28번이 출력이 될때
      • 1003 이 숫자가. 나머지 배열을 다 검사 
        • 1001, 1002, 1003,1004 => 이렇게 다 출력해야 하는데.  
  • 하지만 조건을 걸면 
  • number == item[j]를 걸면 전부 출력하지 않고. 서로 맞는것만 출력이 되는거다. 
  •  조건을 걸면 
    • 1003 
      • 1001,1002,1003,1004
      • 1003숫자가. 위의 4개를 검사를 하면서. 1003이 같으니. 출력이 가능하다. 
      • 즉 1001,1002,1004는 다르니. 3개를 뺄 수 있는거다. 
  • 이래서 조건을 거는거다. 
  • 28번을 굳이 다 출력할 이유가 없으니. 
  • 서로 비교할 배열끼리 비교. 같다고 하고. 

C0802문제02.html
C0802문제02.html


  • total을 2번째 for문에 적은 이유
    • 조건에 맞게 total에 값을 더해줘서 저장해야 한다. 
    • total을 2번째 for문 밖에다가 적었으면. 
    • for문이 2번 즉 4 * 7 = 28번이 도는데. 
    • 그러면 total은 28번의 값을 저장이 되니. 
    • 2번째 for문안에 total을 넣어서 조건에 맞게 저장해야 한다. 
  • total  += (price[j] * count); 
    • 여기서 count => orderCount[i]; 
    • 2번째 for문은 j로 돌지만 왜 i로 하냐. 
    • total은 order의 배열만큼 값을 더해야 하기 때문에. 
    • 조건에 맞게 값을 더 해주어야 하지만. order의 배열만큼 저장을 해주어야 해서.
    • orderCount[j]로 곱해주면 안된다. 그러면 값을 덜 더해주는거다.  
  • total += (price[j] * orderCount[j]); 
    • 이렇게 곱하게 되면.
    • 오늘 주문들어온 내역만큼 구한게 아니라. 
    •  item만큼 곱해진것. 즉 메뉴판만큼만 곱해진거다.
    • 오늘 주문 들어온 수량만큼 곱해진게 아니라. 

C0802문제03.html
C0802문제03.html

 

C0802문제03.html


C0802문제04.html


C0802문제05.html

 

C0802문제05.html


C0802문제06.html


C0802문제07.html
C0802문제07.html


 

반응형