[11.07] 내일배움캠프[Spring] TIL-6

박상훈·2022년 11월 7일
0

내일배움캠프[TIL]

목록 보기
6/72

[11.07] 내일배움캠프[Spring] TIL-6

1. 파이썬으로 알고리즘 풀이하기

1) [ 3 , 5 , 6 , 1 , 2 , 4 ]에서 가장 큰 값 찾기

input = [3, 5, 6, 1, 2, 4]


def find_max_num(array):
    for j in array:
        for compare in array:
            if j < compare:
                break
        else:
           return j


result = find_max_num(input)
print(result)

👉 여기서 else문의 들여쓰기 위치가 정말 중요했다.
👉 else문만 1시간 들여다 봤다... 기존 상식의 else문이 아님..!!!
👉 for else 문이라고 for문 안에 내용이 break없이 잘 수행 됐다면 else문을 실행하는 python 문법이 존재했다... 알고리즘은 쉬운 문제이므로 생략!

2) 입력받은 영어 문자열에서 가장 많이 쓰인 알파벳 구하기

def find_max_occurred_alphabet(index_array):
    index = 0
    for i in index_array:
        max = index_array[0]

        if i > max:
            max = i
            index = index_array.index(max)

    return chr(index+97)

def find_alphabet_occurrence_array(string):
    alphabet_occurrence_array = [0] * 26

    for alpha in string:
        if alpha.isalpha():
            alphabet_occurrence_array[ord(alpha) - 97] += 1

    return alphabet_occurrence_array


result1 = find_alphabet_occurrence_array("best of best sparta")

result = find_max_occurred_alphabet(result1)
print(result)

👉 총 26개의 알파벳의 순서를 가진 배열방을 만든 후
만약 알파벳이 잘 들어왔다면( alpha.isalpha( ) ), 아스키코드 값 - 97
을 하면 'a'부터 특정 알파벳의 위치가 index로 매칭된다.
👉 해당 알파벳일 때 해당 인덱스를 +1해주면 a ~ z 까지 0 ~ 26 번째 까지의 index를 가진 배열 방에 총 갯수가 들어가게 된다.
👉 ex ) { 3,0,0,2,.......etc }

2. java

👉 java는 기존에 조금 배운 문법이 있으므로 다시 알게 된 사실이나, 새로알게 된 사실 위주로 서술할 것이다.

  • 삼항 연산자
 String result = (a < 10 ) ? "10보다 작습니다.":"10보다 큽니다";
  • 상속
    👉 항상 헷갈리는 개념 중 하나
    👉 부모 생성자에서 매개변수를 받아 멤버 변수를 초기화 해준다면,
    상속받은 클레스에서도 생성자에서 super( 부모가 필요한 매개변수 )를
    해줘야한다!!
class Animal{

    String name;
    String color;

    public Animal(String name) {
        this.name = name;
    }

    public void cry(){
        System.out.println(name+"울고있어!");
    }
}


class Dog extends Animal{

    public Dog(String name) {
        super(name);
    }

    public void swim(){
        System.out.println(name+"은 수영하고 있어!");
    }

    @Override
    public void cry() {

        System.out.println(name+"울고있다니까!!");
    }
}
  • 접근제어자( 너무 당연하고 대충 써서 이번에 정리할 것!! )
    👉 private : 같은 클레스에서만 접근!
    👉 default : 같은 패키지 내에서만 접근!
    👉 protected : 같은 패키지 내, 패키지의 자손클래스에서 접근 가능!
    👉 public : 제한 X
  • 프로그래머스 코테 기본 - 1
    👉 n이라는 정수와 , "AB"라는 문자열을 입력 받았다면 , n만큼 밀어
    "BC"라고 출력되게 한다.
import java.util.Scanner;


class Solution {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String inputText = sc.next();
        Solution so = new Solution();
        System.out.println(so.solution(inputText, n));
    }

    public String solution(String inputText, int n) {

        char [] changStr = inputText.toCharArray();
        String str = "";

        for(int i=0;i<changStr.length;i++){
            if(changStr[i] <'A'){

                if(changStr[i]+n<'z'){
                    changStr[i]+=n;
                }else{
                    changStr[i] = (char) ('a'+((changStr[i]+n-1)-'z'));
                }


            }else{
                if(changStr[i]+n<'z'){
                    changStr[i]+=n;
                }else{
                    changStr[i] = (char) ('A'+((changStr[i]+n-1)-'Z'));
                }
            }
            str += String.valueOf(changStr[i]);
        }



        return str;

    }
}

👉 정답코드를 못봐서 정답인지는 모르지만 구현은 잘된다.
👉 나는 문자열을 문자배열형으로 바꿔주는 String.toCharArray()를 사용하여
문자 단위의 배열로 담아준 뒤 , 아스키코드 값으로 대문자 소문자를 판별한다.
👉 만약 받은 수의 + n 값이 z를 넘어간다면 a or A로 넘어가도록 조건을 걸어준다.
👉 보기 좋은 코드는 아닌 것 같다....

3. 느낀점⭐

1) 하루에 하나라도 java코테 풀자...!
2) 기본중에 기본이라는데 너무 어렵다...
3) 기초를 더욱 단단하게 하자!!

profile
기록하는 습관

0개의 댓글