Develop/곤부📙

프로그래머스(코딩 기초 트레이닝) 코테스터디 / 2

밀김 2023. 5. 3. 08:58
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

//양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 
//이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.

class Solution {
    public int solution(int n) {
        
        int answer = 0;
         // n이 홀수인 경우
        if (n % 2 == 1) { //첫번째 if문 이유: 홀수 조건 만족
            for (int i = 0; i <= n; i++) { //for문을 n만큼 도는 이유: 홀수의 갯수만큼 돌면서 값을 누적해야하기 때문에
                if (i % 2 == 1) { //두번째 if문 이유: 홀수일때만 값을 누적하려고 
                    answer += i; //더한 값 누적
                }
            }
        // n이 짝수인 경우
        } else { 
            for (int i = 0; i <= n; i++) {
                if (i % 2 == 0) { 
                    answer += i * i; //제곱 누적값 구하기 식
                }
            }
        }
        return answer;
    }
}

 

 

 

 

	        boolean isEqual = eq.equals("=");
	        boolean isGreater = ineq.equals(">");

        
	        if (isEqual) { //eq가 "="인 경우 ▶ boolean의 기본값은 false니까 이부분이 false인가 했는데 그건 아님! 그냥 eq가 "="인 경우임
	            if (isGreater) { //ineq가 ">"인 경우
	                return n >= m ? 1 : 0; //참이면 1 거짓이면 0
	            } else {
	                return n <= m ? 1 : 0;
	            }
	        } else { // eq가 "!"인 경우
	            if (isGreater) { //ineq가 ">"인 경우
	                return n >= m ? 1 : 0;
	            } else {
	                return n <= m ? 1 : 0;
	            }
	        }

 

 

 

 

class Solution {
    public int solution(String str1, String str2) {
    if (str1.contains(str2)) {
        return 1;
    } else {
        return 2;
    }
    }
}
//특정 문자열을 찾아내주는 contains() 매서드를 이용하여 str2 문자열 찾기

 

 

 

 

//정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 
//모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.

class Solution {
    public int solution(int[] num_list) {

        int puls = 0;
		int mult = 1;
		int multPlus = 1;
        
		for(int i=0; i<num_list.length; i++) {
			mult *= num_list[i];
			puls += num_list[i];
		}

		multPlus = puls*puls;
		
		if(mult<multPlus) {
			return 1;
		}else {
            return 0;
		}
        
    }
}

 

 

 

 

 

//정수가 담긴 리스트 num_list가 주어집니다. num_list의 홀수만 순서대로 이어 붙인 수와 
//짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 함수를 완성해주세요.


//		StringBuilder는 문자열을 효율적으로 처리할 수 있는 클래스 중 하나입니다. 
//		StringBuilder 클래스는 가변 크기의 문자열을 다루는 데 사용되며, 문자열을 추가, 삭제, 수정하는 등의 작업이 가능합니다.
		
        
		StringBuilder sb = new StringBuilder();
		
		for(int i=0; i<num_list.length; i++) {
			if(num_list[i]%2==1) {
				sb.append(num_list[i]);
			}
		}
		
		String str = sb.toString(); //홀수
		
		System.out.println("홀수만 이어붙인 수 : "+str);
		
		StringBuilder sb2 = new StringBuilder();
		
		for(int i=0; i<num_list.length; i++) {
			if(num_list[i]%2==0) {
				sb2.append(num_list[i]);
			}
		}
		
		String str2 = sb2.toString(); //짝수
		
		System.out.println("짝수만 이어붙인 수 : "+str2);
		
		
		int h = Integer.parseInt(str); //홀수
		int g = Integer.parseInt(str2); //짝수

		int result = h+g;
		
		System.out.println(result);

 

 

 

 

 

 

//정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 
//그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 
//return하도록 solution 함수를 완성해주세요.

//*import문 안써줘도 오류가 나더라~~

import java.util.Arrays;
class Solution {
    public int[] solution(int[] num_list) {
      int[] answer;
        
        if (num_list[num_list.length - 1] > num_list[num_list.length - 2]) {
            int lastDiff = num_list[num_list.length - 1] - num_list[num_list.length - 2];
            answer = Arrays.copyOf(num_list, num_list.length + 1);
            answer[num_list.length] = lastDiff;
        } else {
            int lastDouble = num_list[num_list.length - 1] * 2;
            answer = Arrays.copyOf(num_list, num_list.length + 1);
            answer[num_list.length] = lastDouble;
        }
        
        return answer;

    }
}

 

 

 

 

 

//두 배열이 얼마나 유사한지 확인해보려고 합니다. 
//문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.

class Solution {
    public int solution(String[] s1, String[] s2) {       
        int answer = 0;

        for(int i = 0; i < s1.length; i++){      
           String firstStr = s1[i];                //s1의 i번째 요소를 기준으로
            for(int j = 0; j < s2.length; j++){      
               String seconStr = s2[j];            //s2의 j번째 요소들을 돌며
                if(firstStr.equals(seconStr))      //같은 문자열일때 answer++
                    answer++;
            }
        }
        return answer;
    }
}

 

 

 

 

//문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 
//오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.


import java.util.Arrays;
class Solution {
    public int[] solution(String my_string) {
        String result = "";
        for (int i = 0; i < my_string.length(); i++) {
            char ch = my_string.charAt(i);
            //charAt:문자열에서 지정된 문자의 위치를 반환해주는 메서드
            if (48 <= ch && ch <= 57) {
            //아스키코드 48=0 / 57=9 즉,0~9까지의 범위를 나타냄
                result += ch;
            //문자열중에 ch(0~9)가 있다면 result에 누적해서 더해줌
            }
        }

        char[] charArray = result.toCharArray();
        //toCharArray:문자열을 문자 배열로 변환해주는 메서드
        //문자열이였떤 result를 문자배열 charArray로 변환해줌
        int[] aa = new int[charArray.length];
        //charArray와 크기가 같은 정수형배열 aa를 만들어준다
        //정수형배열을 굳이 또 만들어주는 이유는,오름차순 숫자 정렬한것을 return해야되기 때문에
        for (int i = 0; i < charArray.length; i++) {
            aa[i] = Integer.parseInt(Character.toString(charArray[i]));
            //Character.toString메서드를 이용하여 charArray안에 원소들을 모두 string형으로 변환해준다
            //그 변환해준 문자열을 정수형 배열에 담기 위해 Integer.parseInt로 변환해줌
        }

        Arrays.sort(aa); //정렬
        Arrays.toString(aa); //문자열로 뽑아주기 위해 tostring으로 변환
        return aa;

        
    }
}

 

 

 

 

 

//영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 
//문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 
//solution 함수를 완성해주세요.

class Solution {
    public String solution(String my_string) {
       return my_string.replaceAll("[aeiou]","");
        //replaceAll 메서드로 aeiou 찾아서 빈문자열""로 반환
    }
}

 

 

 

//문자열 my_string이 매개변수로 주어집니다. 
//my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
//정규식을 이용하여 풀기
class Solution {
    public int solution(String my_string) {
        int answer = 0;
        
        String nums = my_string.replaceAll("[^0-9]", "");
        
        for(int i=0; i<nums.length(); i++) {
            answer += Integer.parseInt(nums.substring(i,i+1));
        }
        return answer;
    }
}

 

 

 

 

 

//군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.
//암호화된 문자열 cipher를 주고받습니다.
//그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
//문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.


class Solution {
    public String solution(String cipher, int code) {
        String answer = "";
		for(int i=0; i<cipher.length(); i++) {
			String[] answer2 = cipher.split("");
			//split : 문자열 잘라서 <문자열 배열>리턴
			//substring : 자르고싶은 문자열 위치 지정해주고 <문자열>리턴
			if((i+1)%code==0) {
			//실제 배열의 위치와 인덱스 위치는 +1차이가 나서 +1..(김도연씨가 알랴줌♥)
                answer += answer2[i];
			}
            
		}
        return answer;
    }
}

 

 

 

 

//가위는 2 바위는 0 보는 5로 표현합니다. 
//가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때,
//rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 
//return하도록 solution 함수를 완성해보세요.


class Solution {
    public String solution(String rsp) {
        //가위:2 바위:0 보:5
  			String[] rsp2 = rsp.split("");
			String result = "";
			
            for(int i=0; i<rsp2.length; i++) {
				if(rsp2[i].equals("2")) {
					result+="0";
				}if(rsp2[i].equals("0")) {
					result+="5";
				}if(rsp2[i].equals("5")) {
					result+="2";
				}
			}
			return result;
        
        
    }
}

 

 

 

 

 

//머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 
//50만 원 이상 사면 20%를 할인해줍니다.
//구매한 옷의 가격 price가 주어질 때, 
//지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.

class Solution {
    public int solution(int price) {
        
            double result = 0;
			double five = 0.05;
			double ten = 0.1;
			double two = 0.2;
			
			if(500000<=price) {
				result = price*two;
				price = (int)(price-result);
				return price;
			}if(300000<=price) {
				result = price*ten;
				price = (int)(price-result);
				return price;
			}if(100000<=price) {
				result = price*five;
				price = (int)(price-result);
				return price;
			}
        return price;
    }
}

ㅋㅋㅋㅋ이문제 9점받음..따봉 옷가게야 고마버..ㅠㅠ

 

 

 

 

 

 

			//정수 배열 numbers가 매개변수로 주어집니다. 
			//numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
			
			//두개를 곱했을때 가장 큰 결과값이 나오는것 반환하기
			
			int[] numbers = {0, 24, -31, 9,1, 10}; //최댓값 -3과 -5끼리 곱한 결과:15 
	        Arrays.sort(numbers);
	        //정렬
	        int res1 = numbers[0] * numbers[1]; //첫번째 두번쨰
	        int res2 = numbers[numbers.length - 1] * numbers[numbers.length - 2];

	        System.out.println(res1 > res2 ? res1 : res2);

 

 

 

 

 

//문자열 my_string이 매개변수로 주어질 때, 
//대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

class Solution {
    public String solution(String my_string) {
        StringBuilder results = new StringBuilder();
        //문자열 결합을 위해 스트링빌더 객체 사용
            
        for(int i=0; i<my_string.length(); i++) {
            char ch = my_string.charAt(i);
            //Character.isUpperCase(대소문자 확인 메서드. 변환 안해줌 확인만 해줌) 를 사용하기위해 my_string을 char형으로 형변환. 그냥 (char)이렇게 할순 없음
        if(Character.isUpperCase(ch)) {
        //만약 ch에 대문자가 있으면
            results.append(Character.toLowerCase(ch));
        //results 객체에 소문자로 변환한(toUpperCase는 확인 말고 무조건 변환해줌) ch를 넣어주고
        }    else if(Character.isLowerCase(ch)) {
            results.append(Character.toUpperCase(ch));
        //그와 반대되는 조건문
        }
            
    }
        return results.toString();
        //객체를 반환할수 없으니까 toString을 붙여서 문자열로 반환
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

728x90