• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

섹션4-문제풀이2 로또 질문

24.04.28 07:03 작성 조회수 92

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
안녕하세요. 질문이 생겨서 질문을 남깁니다.

문제 답안 풀이 나온 방법 말고 다른 방법으로 풀려고 하는데, 답이 나오는지 확인을 받고 싶어서 이렇게 질문을 남깁니다.

compareTo로 해서 로또 번호가 잘나오는지 확인을 받고 싶네요. 계속 하는데 실패 해서요..어렵 네요..

답변 부탁드립니다.

답변 1

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2024.04.28

안녕하세요. 생각하는자님, 공식 서포터즈 OMG입니다.

compareTo는 같은 값인지를 확인할 때 사용하고 싶으신 것으로 이해하였습니다.

강의에서 영한님이 진행한 코드에서, 고유한지 확인하는 메서드 내에서의 비교로직을 수정하면 될 것 같은데요,

 

저의 경우 강의에서 제공해드리는 코드에서, 파라미터의 타입을 Integer로 변경한 후,

파라미터로 넘어온 number를 통해 compareTo를 호출하여 로또 배열의 값과 비교하도록 수정해보았습니다 😀

image

감사합니다.

omg님 답변주셔서 감사하지만, 전 영한님의 코드(isUnique)를 모른다고 했을때를 가정하고 풀어보려고 하는 것입니다.

부족한 이야기 이지만 어차피 이것(영한님의 코드나 omg님이 만든 코드)을 보고도 나중에 시간이 지나면 아직 익숙하지 않아서 안칠 가능성이 높다고 생각합니다.(써봐야 내가 모르니 자연스럽게 까먹고 이게 어떻게 동작하는건지 의문만 남길것 같음.)

그래서 공식서포터즈님들이나 영한님이 준코드는 일단 내버려두고 내가 만들어봐야겟다 해서, 만드는중인데.. 하나의 메서드 안에서 증복체크 + 널 값이 없게, 값넣기 등을 하려고 하는데 아직 저가 실력이 부족해서 그런지 모르지만, 가능할것 같긴한데....안되서 답이 없나 고민하게 되었고..compareTo로 다 구현이 가능한지 확인하고 싶었습니다.

미완성 이고 볼품없는 코드지만 일단 올림니다.

image 이런식의 상태에서 compareTo로만 할수 있을까요?

다시 한번 답변 부탁 드립니다.(그리고 오늘은 시간이 없어서 좀 늦게 댓글을 남겨도 양해 바랍니다.)

OMG님의 프로필

OMG

2024.04.28

이런식의 상태에서 compareTo로만 할수 있을까요?

1) compareTo는 숫자가 같은지 아닌지만 확인 가능합니다. 올리신 코드 구조에서는 값이 중복인지 체크하는 변수나 함수가 없기 때문에 불가능합니다.

2) 21번째 줄의 target(추출한 번호)이 로또를 저장하는 배열에 중복된 값인지를 확인하는 boolean 타입 변수를 사용해보셔도 좋을 것 같아요. (반복문 / if문 사용)

3) count변수가 발견한 로또의 갯수로도 (6을 넘기지 않기 위한) 사용하지만, 로또가 저장된 배열의 인덱스로도 사용할 수 있을 것 같아요. 기존에 선언한 변수들을 활용하면 boolean타입의 변수 하나만 추가하면 작성하신 코드로도 가능할 것 같습니다.

OMG님의 프로필

OMG

2024.04.28

스스로 해결하고 싶어하시는 것 같아 문제풀이 방식에 대한 인사이트를 드리면

int seven = 7;
int arr[] = {1,2,3,9,10};
boolean isSevenExist = false; // 선언, 할당은 false로 

for (int i = 0; i < arr.length; i++) {
    if (arr[i] == 7) {
        isSevenExist = true; // 조건을 만족할 때 true로 변경
        break;
    }
}
if (isSevenExist) { // 반복문의 탐색이 종료되었을 때 체크.
    System.out.println("7이 존재합니다.");
}

(2)에서 설명드린 것은 위의 코드와 같이 반복문을 탐색할 때 boolean 변수를 사용하여 배열의 중복값, 값의 존재여부 등을 판별할 수 있는 방법입니다.

강의에서는 별도의 메서드를 사용하였지만, 변수로도 가능하니 이 점을 활용해보시면 좋을 것 같네요.

알켜 주셔서 감사합니다. 시간 나면 omg님의 말대로 해봐야 겠네요.