블로그 이미지
오정oI

카테고리

분류 전체보기 (116)
이직준비 (10)
국비-클라우드 (1)
학점은행제 (0)
취미 (0)
주식 (0)
외국어 (0)
자격증 (14)
BigData_On (1)
BigData_Off1 (74)
클라우드 (0)
언어_Framework (1)
언어-Server (2)
언어_Client (0)
업무 (1)
IT참고서적 (1)
IT 최신 트랜드 (0)
제테크 (1)
Study Plan (2)
동영상 및 자료 (5)
여행 (1)
git (0)
Total
Today
Yesterday
반응형
SMALL

### 2022.10.18. 화

1) 최댓값과 최솟값

- 시간 : 오후 3시 10분 ~ 3시 35분 사이

 

* 효율성 ↑

① 데이터 많아졌을 때 고민, 

- 숫자 배열 생성하지 말고, int minVal, int maxVal 2개 변수 만들어서 데이터 비교문 안에서 값 추출!

int[] numArr = new int[strings.length];

 

// sol. 

import java.util.Arrays;
import java.lang.*;

class Solution {
    public String solution(String s) {
       
        // 1. 문자열 배열에 담기
        String[] strings = s.split(" ");
        int[] numArr = new int[strings.length];
        for (int i = 0; i < strings.length; i++) {
            numArr[i] = Integer.parseInt(strings[i]);
        }
        
        // 2. 데이터 정렬
        Arrays.sort(numArr);
        
        // 3. 첫번째 값과 마지막값 리턴
        return numArr[0] +" "+ numArr[s.split(" ").length-1];
    }
}

 

2) JadenCase 문자열 만들기

- 시간 : 오후 4시 이후. 오래 걸림..,

 

 

* 효율성 ↑

① 일단 다 소문자 처리

② 문자열에 " " 위치 찾아서 해당위치 +1 대문자 처리 ( + substring 함수도 같이 이용!)

③ 문자열 배열에 " " 기준으로 데이터 담아서 해당 문자 첫번째 글자만 대문자 처리

 

// sol. 1

import java.io.*; 
import java.util.*;
import java.nio.charset.StandardCharsets;

class Solution {
    public String solution(String s) {
        
        String answer = "";
        // 1. 문자열 다 소문자 처리
        s = s.toLowerCase();
        
        // 2. 문자열 문자 배열에 담기
        String jArr[] = s.split("");
        byte[] bytes = s.getBytes(StandardCharsets.US_ASCII);
        boolean test = false;
        
        // 3. 빈 공백 다음 문자 대문자 처리
        for(int i=0;i<jArr.length;i++){

           if(test || i == 0 && (bytes[i]>= 97 &&  bytes[i]<= 122) ){
               jArr[i]=jArr[i].toUpperCase();
               test = false;
            }

            if(bytes[i] == 32){
               test = true;
            }   
        }

        answer  = Arrays.toString(jArr).replace("[", "").replace("]", "").replace(", ", "");
        
        return answer;
    }
}

// sol. 2

class Solution {
  public String solution(String s) {
        String answer = "";
        String[] sp = s.toLowerCase().split("");
        boolean flag = true;

        for(String ss : sp) {
            answer += flag ? ss.toUpperCase() : ss;
            flag = ss.equals(" ") ? true : false;
        }

        return answer;
  }
}
반응형
LIST

'이직준비 > 목표1_코테1(2210)' 카테고리의 다른 글

Level 3-2 ( 1)이중우선순위큐 2)야근 지수 )  (0) 2022.11.09
Level 3-1 ( 1)불량 사용자 )  (0) 2022.11.09
Level 1  (0) 2022.10.18
Level 0  (0) 2022.10.18
목차  (0) 2022.10.18
Posted by 오정oI
, |
반응형
SMALL

### 2022.10.19. 화

1) 시저 암호

- 시간 : 오후 12시 ~ 오전 1시

* 효율성 ↑↑ 

① 가독성 높여서 다시 짜보기!(char 비교로)

② 할수 있으면 수학 공식화 해보기 (공식 있으면 활용!)

 

// sol 1.

import java.io.*; 
import java.util.*;
import java.nio.charset.StandardCharsets;

class Solution {
    public String solution(String s, int n) {
        String answer = "";

        // 1. validation, 문자열 arr화, Ascii 셋팅
        boolean test1 = (n >= 1 && n <= 25);
        System.out.println(s.length());
        boolean test2 = (s.length() <= 8000);

        String[] sp = s.split("");
        byte[] bytes = s.getBytes(StandardCharsets.US_ASCII);

        int ascPos = 0;        


        if(test1 && test2){
            // 2. 값 밀어내기
            for(int i=0; i<sp.length; i++){

                ascPos = bytes[i]; // 기본값
                // 2-1). 소문자 z, 대문자 Z값 벗어나는 위치 맨앞으로 셋팅
                if((ascPos+n) > 90 && (bytes[i] >= 65 && bytes[i] <=90) ){
                    ascPos = 64+(ascPos+n-90);
                }else if((ascPos+n) > 122 && (bytes[i] >= 97 && bytes[i] <=122) ){
                    ascPos = 96+(ascPos+n-122);
                }else{
                    ascPos = ascPos+n;
                }

                if(bytes[i] != 32){ // 공백 패스~!
                    //char tempC = (char) (ascPos+n);
                    sp[i] = Character.toString(ascPos);    
                }else if(bytes[i] == 32){
                    sp[i] = " ";
                }
                answer = Arrays.toString(sp).replace("[", "").replace("]", "").replace(", ", "");
            }

        }

        return answer;
    }
}

 

// sol 2.

class Caesar {
    String caesar(String s, int n) {
        String result = "";
    n = n % 26;
    for (int i = 0; i < s.length(); i++) {
      char ch = s.charAt(i);
      if (Character.isLowerCase(ch)) {
        ch = (char) ((ch - 'a' + n) % 26 + 'a');
      } else if (Character.isUpperCase(ch)) {
        ch = (char) ((ch - 'A' + n) % 26 + 'A');
      }
      result += ch;
    }
        return result;
    }

    public static void main(String[] args) {
        Caesar c = new Caesar();
        System.out.println("s는 'a B z', n은 4인 경우: " + c.caesar("a B z", 4));
    }
}

 

// sol. 3

class Caesar {
    public String caesar(String s, int _n) {
        return s.chars().map(c -> {
            int n = _n % 26;
            if (c >= 'a' && c <= 'z') {
                return 'a' + (c - 'a' + n) % 26;
            } else if (c >= 'A' && c <= 'Z') {
                return 'A' + (c - 'A' + n) % 26;
            } else {
                return c;
            }
        }).mapToObj(c -> String.valueOf((char)c))
        .reduce((a, b) -> a + b).orElse("");
    }

    public static void main(String[] args) {
        Caesar c = new Caesar();
        System.out.println("s는 'a B z', n은 4인 경우: " + c.caesar("a B z", 4));
    }
}

 

### 2022.10.17. 월

1) 짝수와 홀수

// sol 1.

class Solution {
    public String solution(int num) {
        String answer = "";
        
        answer = (num%2 == 0) ? "Even": "Odd";
        
        
        return answer;
    }
}

 

// sol 2.

public class EvenOrOdd {

    String evenOrOdd(int num) {

        return num % 2 == 0 ? "Even": "Odd";

    }

    public static void main(String[] args) {

        //String str = "1 2 3 4";

        EvenOrOdd evenOrOdd = new EvenOrOdd();

        //아래는 테스트로 출력해 보기 위한 코드입니다.

        System.out.println("결과 : " + evenOrOdd.evenOrOdd(3));

        System.out.println("결과 : " + evenOrOdd.evenOrOdd(2));

    }

}

2) 서울에서 김서방 찾기

class Solution {
    public String solution(String[] seoul) {
        
        String answer = "";
        int arrLen = seoul.length;
        boolean test = (arrLen >= 1 && arrLen <= 1000);
        int idx = 0;
        
        if(test){
            for(int i=0; i<arrLen; i++){
                if("Kim".equals(seoul[i])){
                    idx = i;
                    break;
                }
            }
            
        }
        answer = "김서방은 " + idx + "에 있다";
        
        return answer;
    }
}

 

3) 행렬의 덧셈

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = {};
        answer = arr1;
        
        
        for(int i=0; i<arr1.length; i++){
            for(int j=0; j<arr1[i].length; j++){
                answer[i][j] += arr2[i][j];
            }
        }
        return answer;
    }
}

 

4) 없는 숫자 더하기

import java.util.Arrays;
 

class Solution {

    public int solution(int[] numbers) {

        return 45-Arrays.stream(numbers).sum();

    }

}

반응형
LIST

'이직준비 > 목표1_코테1(2210)' 카테고리의 다른 글

Level 3-2 ( 1)이중우선순위큐 2)야근 지수 )  (0) 2022.11.09
Level 3-1 ( 1)불량 사용자 )  (0) 2022.11.09
Level 2  (1) 2022.10.18
Level 0  (0) 2022.10.18
목차  (0) 2022.10.18
Posted by 오정oI
, |
반응형
SMALL

 

 

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        
        if((num1 > 0 && num1 <=100) && (num2 > 0 && num2 <=100)){
            answer =  (int) (num1 / num2);
        }
        return answer;
    }
}

 

 

// sol 1.

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        answer = num1 * num2;
        return answer;
    }
}

 

// sol 2.

class Solution {

    public int solution(int num1, int num2) {

        boolean val = (0<num1 && num1 <=100 && 0< num2 && num2 <=100);

        int answer = 0;

 

        if(val){

            answer = num1/num2;

        }else{

            answer = -1;

        }

        return answer;

    }

}

 

// sol 1.

=> 확인! 

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        
        if((num1 > 0 && num1 <=100) && (num2 > 0 && num2 <=100)){
            answer =  (int) (num1 / num2);
        }
        return answer;
    }
}

// sol 2.

=> 확인!

class Solution {

    public int solution(int num1, int num2) {

        

        boolean test = (0 < num1 && num1 ≤ 100 && 0 < num2 && num2 ≤ 100);

        int answer = -1;

        

        

        if(test){

            answer = num1 % num2;

        }else{

            answer = -1;

        }

        return answer;

    }

}

 

 

 

class Solution {
    public int solution(int angle) {
        int answer = 0;
        
                
        if(0 < angle && angle < 90){
            answer = 1;
        } else if(angle == 90){
            answer = 2;
        } else if(90 < angle && angle < 180){
            answer = 3;
        } else if(angle == 180){
            answer = 4;
        } else{
            answer = -1;
        }   
                
        return answer;
    }
}

반응형
LIST

'이직준비 > 목표1_코테1(2210)' 카테고리의 다른 글

Level 3-2 ( 1)이중우선순위큐 2)야근 지수 )  (0) 2022.11.09
Level 3-1 ( 1)불량 사용자 )  (0) 2022.11.09
Level 2  (1) 2022.10.18
Level 1  (0) 2022.10.18
목차  (0) 2022.10.18
Posted by 오정oI
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함