181916. 주사위 게임 3 자바

2023. 7. 31. 03:04·문제 풀이/Programmers
728x90
반응형
SMALL

배열의 1~6자리에 각 수자가 나올때마다 +1씩해준다.

그러면 배열의 각 자리에 숫자가 나온 빈도가 출력됨. 

 

경우의 수

cnt는 새로운 숫자가 배열에 추가될 때마다 +1씩 해준다.

예시)

cnt가 1인경우 : 모두 같은 숫자

cnt가 2인경우 : 두개의 숫자가 들어옴 

 

cnt의 상황에 따라 경우의 수를 추가한다.

cnt가1이면 모두 같은 숫자이므로 고려x

cnt가 2이면 두개의 상황이 주어진다.
📌3개의 같은 숫자 + 1개의 다른 숫자

📌2개의 같은 숫자 + 2개의 같은 숫자

📌또한 숫자의 대소관계를 파악해야 함

cnt가 3이면 하나의 상황
3개의 같은 숫자와 1개의 다른 숫자

cnt가 4이면 하나의 상황
가장작은 숫자를 찾아서 출력한다.

class Solution {
    public int solution(int a, int b, int c, int d) {
       int[] arr = {a,b,c,d};
	int result= 0;
	int cnt =0;
	
	int[] stack = new int[7];
	
	for(int i=0; i< arr.length;i++) {
		int  pushNum= arr[i];
		
		if(stack[pushNum]==0) {
			cnt++;
			stack[pushNum]++;
		}
		else stack[pushNum]++;
	}
	//System.out.println("cnt:"+cnt);
	//System.out.println("stack배열 : "+Arrays.toString(stack));
	//1. cnt가 1일때
	if(cnt==1)	result = 1111*a;
	//2. cnt가 2일때 - 하나의 숫자 개수가 더큼
	if(cnt==2) {
		//flag가 true이면 하나의 개수가 3개인것으로 연산
		boolean flag = false;
		int max = 0;
		int min=0;
		for(int i=0; i<stack.length;i++) {
			if(stack[i]==3) {flag=true; max=i;}
			else if(stack[i]==1) min=i;
		}
		if(flag==true) {
			int x = (10*max)+min;
			result = x*x; 
		}
		else {
			max = a;
			for(int i=0; i<stack.length;i++) {if(i!=max && stack[i]!=0) min=i; }
			result = (max+min)*Math.abs(max-min);
		}
	}
	
	
	//3. cnt가 3일때 - 하나의 큰 숫자를 제외하고 나머지 둘을 곱한다.
	if(cnt==3) {
		result=1;
		for(int i=0;i<stack.length;i++) {
			if(stack[i]==1) result *=i;
		}
	}
	
	//4. cnt가 4일때 - 가장 작은 숫자를 골라 출력한다.
	if(cnt==4) {
		result=0;
		int min =10;
		for(int i=1; i<stack.length;i++) {
			if(stack[i]!=0) {result = i<min?i:min; break;}
		}
	}
        return result;
    }
}

728x90
반응형
SMALL

'문제 풀이 > Programmers' 카테고리의 다른 글

[자바]120956 프로그래머스 옹알이 문제 코드 첨부  (1) 2023.08.12
프로그래머스42889. 실패율 자바  (0) 2023.08.09
120875. 평행 (자바) 문제에 함정이 있습니다 꼭 읽어보세요!  (0) 2023.08.06
120866. 안전지대 자바  (2) 2023.08.01
181893. 배열 조각하기 자바  (0) 2023.07.31
'문제 풀이/Programmers' 카테고리의 다른 글
  • 프로그래머스42889. 실패율 자바
  • 120875. 평행 (자바) 문제에 함정이 있습니다 꼭 읽어보세요!
  • 120866. 안전지대 자바
  • 181893. 배열 조각하기 자바
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
    250x250
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (325)
      • 면접 준비 (22)
        • OS (6)
        • Spring Security (0)
        • Java (3)
        • DB (11)
        • Network (3)
      • ElasticSearch (2)
      • Kafka (4)
      • Spring (22)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (2)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      jsp기초
      HTML
      자바
      스프링프레임워크
      springsecurity
      자바스크립트
      리눅스마스터2급
      자바 면접질문
      JSP
      백준
      java
      CSS
      jsp request
      spring redis
      JavaScript
      redis 채팅
      Spring Data Redis
      Til
      레디스
      자바 면접
      프로그래머스
      자바기초
      리눅스
      JS
      리눅스마스터2급정리
      Spring
      자바 알고리즘
      redis
      자바 반복문
      Springframework
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    181916. 주사위 게임 3 자바
    상단으로

    티스토리툴바