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 }
👉 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로 넘어가도록 조건을 걸어준다.
👉 보기 좋은 코드는 아닌 것 같다....
1) 하루에 하나라도 java코테 풀자...!
2) 기본중에 기본이라는데 너무 어렵다...
3) 기초를 더욱 단단하게 하자!!