모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    금연07132016님의
    개인페이지입니다
    가입 : 11-04-28
    방문 : 1788회
    닉네임변경 이력
    회원차단
    회원차단해제
    게시물ID : programmer_1221
    작성자 : 애널써커.
    추천 : 0
    조회수 : 4432
    IP : 173.73.***.41
    댓글 : 1개
    등록시간 : 2014/02/14 08:33:12
    http://todayhumor.com/?programmer_1221 모바일
    최빈값 알고리즘과 2차원 배열의 문제...
    import java.util.Collections;
    import java.util.Scanner;
    import java.util.Arrays;
    import java.util.List;

    public class Code {


    public static void main(String[] args) 
    {
    int num1, num2, num3, num4, num5, sum, avg, max, min;
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Enter the first number:");
    num1 = keyboard.nextInt();
    System.out.println("Enter the seond number:");
    num2 = keyboard.nextInt();
    System.out.println("Enter the third number:");
    num3 = keyboard.nextInt();
    System.out.println("Enter the fourth number:");
    num4 = keyboard.nextInt();
    System.out.println("Enter the fifth number:");
    num5 = keyboard.nextInt();
    keyboard.close();
    int[] num = new int[5]; // array named num is declared with 5 variables
    num[0] = num1;
    num[1] = num2;
    num[2] = num3;
    num[3] = num4;
    num[4] = num5;
    Arrays.sort(num);
    int n1 = num[0];
    int n2 = num[1];
    int n3 = num[2];
    int n4 = num[3];
    int n5 = num[4];
    List<Integer> index1 = Arrays.asList( n1, n2, n3, n4, n5);
    int occurrences1 = Collections.frequency(index1, n1);
       
        List<Integer> index2 = Arrays.asList( n1, n2, n3, n4, n5);
    int occurrences2 = Collections.frequency(index2, n2);
           
        List<Integer> index3 = Arrays.asList( n1, n2, n3, n4, n5);
    int occurrences3 = Collections.frequency(index3, n3);
           
    List<Integer> index4 = Arrays.asList( n1, n2, n3, n4, n5);
    int occurrences4 = Collections.frequency(index4, n4);
           
    List<Integer> index5 = Arrays.asList( n1, n2, n3, n4, n5);
    int occurrences5 = Collections.frequency(index5, n5);
           
      int [][] nums = new int [5][2];
      nums [0][0] = n1;
    nums [1][0] = n2;
    nums [2][0] = n3;
    nums [3][0] = n4;
    nums [4][0] = n5;
        nums [0][1] = occurrences1;
        nums [1][1] = occurrences2;
        nums [2][1] = occurrences3;
        nums [3][1] = occurrences4;
        nums [4][1] = occurrences5;
        int maxOccurrences = Math.max(Math.max(Math.max(Math.max(occurrences1, occurrences2),occurrences3),occurrences4),occurrences5);
       
        for (int i = 0; i < nums.length; i++) {
        for (int j = 0; j < nums[i].length; j++) {
        if (nums[i][j] == maxOccurrences) {
        int mode = nums [i][j-1];
        System.out.println("Mode: " + mode);
        }
      }
        }
       
        sum = (int)(num1 + num2 + num3 + num4 + num5);
    avg = (int)(sum/5);
    max = Math.max(Math.max(Math.max(Math.max(num1, num2),num3),num4),num5);
    min = Math.min(Math.min(Math.min(Math.min(num1, num2),num3),num4),num5);

    System.out.println(" ");
    System.out.println("Sum:" + sum);
    System.out.println("Avg:" + avg);
    System.out.println("Max:" + max);
    System.out.println("Min:" + min);
    System.out.println("Median:" + num[2]);
    }
    }




    제가 짠 코드인데요... 갓 시작한 학생이라 아직 자바 2차원 배열이나 루프개념이나 이해가 안가는 부분이 있습니다.
    20~30시간정도 mode (최빈값; 가장 빈도가 많은 값)을 찾는 알고리즘을 만들기 위해서 끊임 없이 stack overflow를
    뒤졌는데도 해답이 안나와서 여쭙습니다.

    빨간색으로 되어져있는 부분이 최빈값을 찾아내는 알고리즘인데요.
    최빈값을 구하기는 했으나 문제되는 부분이 많이 있습니다..ㅠㅠ

    빨간 부분의 구조가 어떻게 되어있냐면,
    프로그램 사용자가 5가지의 숫자를 어떤 순서로던지 입력을 합니다. (예: 12, 16, 18, 12, 16)
    이렇게 입력이 된 숫자를 num이란 배열로 num[0]~num[4] 까지 최소값에서 최대값으로 정렬을 시켜주구요.
    ArrayList index1 에서 index5에 occurrences1~occurrences5 변수에 각 5가지의 숫자에 해당되는 빈수를 저장합니다.
    다시 num[0] ~ num[4]를 n1~n5 라는 변수에 저장을 시킵니다.
    n1~n5 변수를 nums라는 2차원배열의 첫번째 열에 차례대로 (최소값~최대값 순서로) 저장을 시켜주구요. (예: nums[0][0] = n1, nums[1][0] = n2)
    그리고 n1~n5변수의 빈수 (occurrences1~occurrences5)를 2차배열 두번째 열에 저장을 시켜주구요. (해당되는 변수의 오른쪽 열)
    그리고 occurrences1~occurrences5 변수중 가장 큰 값을 가진 변수를 maxOccurrences라는 변수에 저장합니다.
    그리고 그 maxOccurrences라는 변수에 저장되어져 있는 값을 
    맨 아래의 루프에 표시된것 처럼 nums [][] 2차원 배열에서 값을 찾은뒤 해당 되는 값이 존재하는 곳의 주소를 기억해서
    그 주소 (nums[i][j])를 토대로 왼쪽에 있는 숫자 (nums[i][j-1]) 를 최빈값(mode) 로 출력해주는데요.

    위 코드대로 돌렸을 시에 문제는 아래와 같습니다...
    1. 5가지의 숫자를 1,2,1,3,5라고 가정했을시 maxOccurrences는 2입니다. 2의 주소 두번째 열에서만 검색해야하는데 첫번째 열도 검색을 해버려서
       만약에 최대빈수 = 유저가 입력한 값이 될시, 에러가 떠서 실행이 안됩니다..ㅠㅠ

    2. maxOccurrences를 불러올때, 1번과 같은 에러가 만약에 없을 시, 첫번째 행에서 중복값이 있을 경우에 하나의 값만 불러오면 되는데, 중복값을 모      두 불러옵니다.ㅠㅠ
    예->   
     유저가 넣은 값 빈도수 
     2
     1  2
     2  2
     2  2
     3  1
    최빈값 출력시: 1
         1
                                 2
                                 2



    위 두가지 문제점을 고칠수 있는 방법이 없을까요?

    이 게시물을 추천한 분들의 목록입니다.
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    66
    피자 얼려서 먹으니까 맛잇네요? [2] 섹시스님 14/07/22 13:49 176 1
    65
    클래식 제목 찾아주세요... [2] 섹시스님 14/07/19 15:45 16 0
    64
    이거 이름 맞춰보세요 [15] 섹시스님 14/07/18 09:22 299 0
    63
    8-21-13-2-12-5-2-21-14-4-12-5 [5] 섹시스님 14/07/15 01:42 204 5
    62
    고양이가 노려보면 어떡하죠?? [5] 섹시스님 14/07/14 14:36 100 2
    61
    그리드 오토스포츠 (중간난이도) [3] 섹시스님 14/06/28 02:26 40 1
    60
    GRID 오토스포츠 멀티하실분 [1] 섹시스님 14/06/27 03:27 32 0
    59
    잔디장이 에이스침대 섹시스님 14/06/23 05:04 45 0
    58
    ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 섹시스님 14/06/23 04:41 50 0
    57
    Deux Ex: The Fall 앱스토어에서 공짜네요 [7] 섹시스님 14/06/07 18:21 97 1
    56
    험블번들 위클리 나눔 결과입니다. [8] 섹시스님 14/06/07 04:52 99 4
    55
    오늘같은 날엔 뭐하나.. [20] 섹시스님 14/06/06 10:08 194 10
    54
    스팀 친구 하실분! 섹시스님 14/06/04 12:31 61 0
    53
    음..... 이상한가요?? [5] 섹시스님 14/06/03 15:32 162 0
    52
    진리의 패드네요.. [2] 섹시스님 14/05/31 15:54 147 0
    51
    와치독스 스샷들 (본인 찍음) [7] 섹시스님 14/05/28 16:26 313 0
    50
    와치독스 짤막소감 섹시스님 14/05/27 16:03 286 1
    49
    와치독스를 샀다. [3] 섹시스님 14/05/27 09:08 241 2
    48
    발톱에 멍이 들었는데 어떡하나요? 섹시스님 14/05/20 15:59 17 0
    47
    와치독스 이 사양에 돌아갈까요? [10] 섹시스님 14/05/15 12:48 101 0
    46
    test 섹시스님 14/05/05 17:04 21 1
    45
    자바 string 변수를 다른 클래스에서 어떻게 해야 사용할수 있나요? [5] 섹시스님 14/04/30 13:49 29 0
    44
    자바 actionlistener 관련 질문입니다 (jframe) [1] 섹시스님 14/04/30 11:07 17 0
    42
    하아.... 에세이쓰는데 전기가 나갔어요 [5] 애널써커. 14/04/10 16:35 46 0
    39
    북미섭 접속문제 [2] 애널써커. 14/03/11 22:38 64 0
    38
    ssd 브라켓 [2] 애널써커. 14/02/15 04:13 47 0
    최빈값 알고리즘과 2차원 배열의 문제... [1] 애널써커. 14/02/14 08:33 42 0
    [◀이전10개] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈