728x90
반응형

문제

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 갯수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

 

s answer
"pPoooyY" true
"Pyy" false

 

▶ 제한사항

  • 문자열 s의 길이 : 50 이하의 자연수
  • 문자열 s는 알파벳으로만 이루어져 있습니다.

 

 

Solution 코드

class Solution {
    boolean solution(String s) {
        int count=0;
        s = s.toLowerCase(); //대소문자를 구분하지 않기 때문에 가독성을 위해 소문자화
        
        for(int i=0;i<s.length();i++){
            char c = s.charAt(i);
            if(c=='p')
                count++;
            else if(c=='y')
                count--;
        }
        
        if(count == 0)
            return true;
        
        else
            return false;
    }
}
  • 갯수를 비교할 때 대문자와 소문자는 구별하지 않기 때문에 문자열 s의 값을 소문자나 대문자로 변경하여 통일한다. 변경하지 않아도 상관없지만 if(c=='p' || c=='P') 와 같이 코드가 복잡해지기 때문에 가독성을 위해 변경해주었다.
  • 문자열을 한 글자씩 문자화해서 'p' 또는 'y'인지 확인한다. 문자가 p와 같다면 count에 1을 더하고, y와 같다면 1을 빼준다.
  • 문자열 s에 p와 y의 갯수가 같다면 count의 값은 0이 된다. count 값이 0이 아니라면 p와 y의 갯수가 같지 않다는 것을 의미한다.
728x90
반응형

'문제 > JAVA' 카테고리의 다른 글

[JAVA] 정수 제곱근 판별  (0) 2023.05.30
[JAVA] 문자열을 정수로 바꾸기  (2) 2023.05.29
[JAVA] 자연수 뒤집어 배열로 만들기  (0) 2023.05.29
[JAVA] x만큼 간격이 있는 n개의 숫자  (0) 2023.05.29
[JAVA] 약수의 합  (0) 2023.05.29
728x90
반응형

문제

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. (n은 10,000,000,000이하인 자연수입니다.)

 

 

Solution 코드

class Solution {
    public long[] solution(long n) {
        long temp=n; //n은 10,000,000,000이하인 자연수이기 때문에 int가 아닌 long
        int count=0;
        
        //배열의 크기를 정하기 위함
        for(;temp>0;){
            temp /= 10;
            count++;
        }
        
        long[] answer = new long[count];
        
        for(int i=0;n>0;i++){
            answer[i]=n%10;
            n /= 10;
        }
        
        return answer;
    }
}
  • n은 10,000,000,000이하인 자연수이기 때문에 int가 아닌 long으로 선언된다.
  • 배열의 크기를 정하기 위해서 count 변수를 이용하여 자리값을 구한다. n이 12345이면 temp는 1234→123→12→1→0 순으로 반복되어 count는 5가 된다.
  • n이 12345일 때 [5,4,3,2,1]을 리턴하기 위해서, n을 10으로 나누었을 때의 나머지 값을 배열에 넣고 10을 나눈 값으로 다음 반복문을 실행한다. 12345를 10으로 나눈 나머지는 5이고, 12345를 10으로 나눈 값은 1234이다. 1234를 10으로 나눈 나머지는 4이고, 1234를 10으로 나눈 값은 123이다. 이 행위를 0이 될 때까지 반복한다.
  • n의 값이 0이 되면 더 나눌 수 없다는 것을 의미하기 때문에 반복을 종료한다.
728x90
반응형

'문제 > JAVA' 카테고리의 다른 글

[JAVA] 문자열을 정수로 바꾸기  (2) 2023.05.29
[JAVA] 문자열 내 p와 y의 개수  (0) 2023.05.29
[JAVA] x만큼 간격이 있는 n개의 숫자  (0) 2023.05.29
[JAVA] 약수의 합  (0) 2023.05.29
[JAVA] 옹알이  (0) 2023.05.28
728x90
반응형

문제

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

x n answer
2 5 [2,4,6,8,10]
4 3 [4,8,12]
-4 2 [-4,-8]

▶ 제한사항

  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.

 

 

Solution 코드

class Solution {
    public long[] solution(int x, int n) {
        long[] answer= new long[n];//n개의 변수를 담을 배열
        
        long xx=x;//int형으로는 x와 n의 범위를 충족하지 못하기 때문에 더 큰 크기를 담을 수 있는 long으로 선언 
        for(int i=0;i<n;i++){
            answer[i]=xx;
            xx+=x;
        }
        
        return answer;
    }
}
  • x가 -10000000 이상, 10000000 이하인 정수이고 n은 1000 이하인 자연수이기 때문에 long이 아닌 int로 값을 받으면 올바른 값이 나오지 않는다.
  • 리스트를 n개 지니기 위해서 i는 n번 반복한다.
  • x씩 증가하는 xx 변수를 설정하고, 그 값을 반복적으로 증가하여 배열에 넣는다.
728x90
반응형

'문제 > JAVA' 카테고리의 다른 글

[JAVA] 문자열 내 p와 y의 개수  (0) 2023.05.29
[JAVA] 자연수 뒤집어 배열로 만들기  (0) 2023.05.29
[JAVA] 약수의 합  (0) 2023.05.29
[JAVA] 옹알이  (0) 2023.05.28
[JAVA] 문자열에 섞여있는 알파벳 대소문자 변환  (0) 2023.05.24
728x90
반응형

    문제

    정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

     

    입력 출력
    12 28
    5 6
    • 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.
    • 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

     

     

    Solution 코드

    class Solution {
        public int solution(int n) {
            int answer=0;//약수를 모두 더한 값
            
            for(int i=1;i<=n;i++){
                if(n%i==0)	//나머지 값이 없이 나눠지는 값은 약수를 뜻함
                    answer+=i;
            }        
            
            return answer;
        }
    }
    • 약수는 1부터 구한다.
    • 약수는 해당 값으로 나누었을 때 0이 되는 값이기 때문에 입력 받은 n 값을 i로 나누었을 때 나머지가 0이면 약수임을 뜻한다.
    • 약수인 값을 answer에 모두 더해 반환한다.
    728x90
    반응형
    728x90
    반응형

    문제

    머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

    입력 출력
    ["aya", "yee", "u", "maa", "wyeoo"] 1
    ["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] 3

     

    ▶ 제한사항

    • 문자열은 알파벳 소문자로만 이루어져 있습니다.
    • 네 가지를 붙여 만들 수 있는 발음 이외에는 어떤 발음도 할 수 없는 것으로 규정합니다. 예를 들어 "woowo"는 "woo"는 발음할 수 있지만 "wo"를 발음할 수 없기 때문에 할 수 없는 발음입니다.
    • ["aya", "yee", "u", "maa", "wyeoo"]에서 발음할 수 있는 것은 "aya"뿐입니다. 따라서 1을 return합니다.
    • ["ayaye", "uuuma", "ye", "yemawoo", "ayaa"]에서 발음할 수 있는 것은 "aya" + "ye" = "ayaye", "ye", "ye" + "ma" + "woo" = "yemawoo"로 3개입니다. 따라서 3을 return합니다.

     

     

    Solution 코드

    class Solution {
    	public int solution(String[] babbling) {
    		int answer = 0;
    		String[] baby={"aya","ye","woo","ma"}; //할 수 있는 네 가지 발음
    	
    		for(int i=0;i<babbling.length;i++){
    			int pass=0;	//발음이 완벽히 일치하면 바로 다음 babbling으로 넘어가기 위함
    			
    			//발음과 할 수 있는 발음과 완벽히 일치하는지 확인
    			for(int j=0;j<baby.length;j++)
    				if(babbling[i].equals(baby[j])){
    					answer++;
    					pass=1;	//일치
    					break;
    				} 
    
    			//네 가지의 발음이 일치하는지 확인
    			if(pass==0){
    				int check=babbling[i].length();	//발음할 수 있는지 확인할 단어의 길이
    				int check2=0;	//일치하는 단어의 길이 확인
    				
    				for(int k=0;k<baby.length;k++){
    					if(babbling[i].contains(baby[k]))	//할 수 있는 발음이 있는지 확인
    						check2 += baby[k].length();	//할 수 있는 발음의 길이를 더함					
    				
    				//할 수 있는 발음의 수가 일치하면 모두 발음할 수 있다는 것을 의미한다
    				if(check == check2)
    					answer++;
    			}//if_end
    		}//babbling_for_end
    		
    		return answer;
    	}
    }
    • babbling의 발음이 할 수 있는 네 가지의 발음과 정확하게 일치하는지 확인하고, 일치한다면 break를 이용해 다음 배열을 비교한다.
    • 정확하게 일치하지 않는다면 babbling의 발음이 네 가지 발음을 조합한 것인지 확인한다.
    • babbling의 발음의 길이를 check에 넣고, baby의 발음과 일치하면 일치한 길이만큼 check2에 더한다. check와 check2의 값이 동일하다면 babbling은 baby에 들어 있는 발음으로만 구성된 것임을 의미한다.

     

     

     

    main 코드

    		String[] babbling1={"aya", "yee", "u", "maa", "wyeoo"};
    		String[] babbling2={"ayaye", "uuuma", "ye", "yemawoo", "ayaa"};
    
    		Solution s = new Solution();
    
    		/*출력*/
    		int answer=s.solution(babbling1);
    		System.out.println(Arrays.toString(babbling1)+" - "+answer);
    
    		answer=s.solution(babbling2);
    		System.out.println(Arrays.toString(babbling2)+" - "+answer);

     

     

     

    출력 결과

    [aya, yee, u, maa, wyeoo] - 1
    [ayaye, uuuma, ye, yemawoo, ayaa] - 3

     

     

    728x90
    반응형

    + Recent posts