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;
}
}

//정수 배열 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