코트카타
24) 서울에서 김서방 찾기
나의 풀이
class Solution {
public String solution(String[] seoul) {
String answer = "";
// String Kim = "Kim";
// int index = indexOf(seoul,Kim);
for(int i=0;i<seoul.length;i++){
if("Kim".equals(seoul[i])){
answer = "김서방은 "+i+"에 있다";
}
}
return answer;
}
}
확장된 for문과indexOf 메서드를 같이 사용하고 싶었는데 생각만큼 잘 되지 않았다.
그래서 일단 일반 for문을 사용하여 문제를 푼 후, 재도전하기 시작했다.
재도전한 나의 풀이
import java.util.*;
class Solution {
public String solution(String[] seoul) {
String answer = "";
String kim = "Kim";
int index = Arrays.asList(seoul).indexOf(kim);
for(String s : seoul){
if("Kim".equals(s)){
answer = "김서방은 "+index+"에 있다";
}
}
return answer;
}
}
결국 성공했다.
원인은 import와 indexOf 메소드 활용편에 대해 제대로 알아보지 않고 진행했기 때문에 계속 오류가 발생하는 것이었다.
앞으로는 막연하게나마 기억나는 부분이 있다면 다시 잘 찾아보고 활용해봐야겠다.
그래도 내가 생각한 흐름대로 다시 잘 되어서 기쁘다. 😊
개인 과제 진행
Lv1 트러블슈팅
문제 : switch문 안에 case 0:을 넣을 경우, 0을 입력했을 때 프로그램이 종료되지 않는다.
원인 : break를 해도, 가장 가까운 switch문에서 나오기 때문에 while문은 계속 반복 된다.
1차 해결 방법
if문으로 따로 빼서 사용한다.
if(inputNumber==0){
System.out.println("프로그램을 종료합니다.");
break;
}
문제 : default에 1,2,3,4가 아닌 경우는 모두 exception을 반환한다.
원인 : if문을 실행하기도 전에 exception이 발생한다.
2차 해결방법
if문과 switch문 위치를 수정한다.
if(inputNumber==0){
System.out.println("프로그램을 종료합니다.");
break;
}
switch (inputNumber){
case 1:
System.out.println("1. ShackBurger | W 6.9 | 토마토, 양상추, 쉑소스가 토핑된 치즈버거");
break;
case 2:
System.out.println("2. SmokeShack | W 8.9 | 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거");
break;
case 3:
System.out.println("3. Cheeseburger | W 6.9 | 포테이토 번과 비프패티, 치즈가 토핑된 치즈버거");
break;
case 4:
System.out.println("4. Hamburger | W 5.4 | 비프패티를 기반으로 야채가 들어간 기본버거");
break;
default:
throw new IllegalStateException("보기 중에 없는 번호이거나 숫자가 아닙니다. 다시 입력해주세요.");
}
요구사항 : switch문 안에 모든 조건들을 넣고 싶다.
원인 : while문이 종료되어야 한다.
3차 해결방법
while문 안에 boolean타입 변수에 true를 초기화하여 넣고 0에 해당하면 false로 값을 수정한다.
boolean isOkay = true;
while (isOkay){ /* 중략 */ }
switch (inputNumber){
case 0:
System.out.println("프로그램을 종료합니다.");
isOkay = false;
break;
/* 중략 */
}
4차 해결방법(팀원분 피드백 반영)
return문을 사용해서 프로그램이 종료되도록 한다.
switch (inputNumber){
case 0:
System.out.println("프로그램을 종료합니다.");
return;
/* 중략 */
}
Lv2 트러블슈팅
add 함수를 통해 new MenuItem(이름, 가격, 설명) List에 삽입
MenuItem shackBurger = new MenuItem("ShackBurger",6.9,"토마토, 양상추, 쉑소스가 토핑된 치즈버거");
menuItems.add(shackBurger);
MenuItem SmokeShack = new MenuItem("SmokeShack",8.9,"베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거");
menuItems.add(SmokeShack);
MenuItem Cheeseburger = new MenuItem("Cheeseburger",6.9,"포테이토 번과 비프패티, 치즈가 토핑된 치즈버거");
menuItems.add(Cheeseburger);
MenuItem Hamburger = new MenuItem("Hamburger",5.4,"비프패티를 기반으로 야채가 들어간 기본버거");
menuItems.add(Hamburger);
튜터님 피드백 : List.of를 활용
menuItems = List.of(shackBurger,SmokeShack,Cheeseburger,Hamburger);
김영한의 실전 자바 - 기본편
private MathArrayUtils() {
//private 인스턴스 생성을 막는다.
}
private 인스턴스 생성을 막는다.
public static int min(int[] values) {
int minValue = values[0];
for (int value : values) {
if(minValue>value){
minValue=value;
}
}
return minValue;
}
static은 혈액형 O형이라고 생각했다.
거의 모든 사람에게 사용 가능하지만
자기 자신은 O형에게만 수혈 받을 수 있기 때문에
static 메서드는 static 변수만 쓸 수 있다.
new ElectricCar()를 호출하면
ElectricCar 뿐만 아니라
상속 관계에 있는 Car까지 함께 포함해서 인스턴스를 생성
참조값은 x001로 하나이지만
실제로 그 안에서는 Car , ElectricCar 라는 두가지 클래스 정보가 공존하는 것
- 상속 관계의 객체를 생성하면 그 내부에는 부모와 자식이 모두 생성됨
- 상속 관계의 객체를 호출할 때, 대상 타입을 정해야 함. 이때 호출자의 타입을 통해 대상 타입을 찾음.
- 현재 타입에서 기능을 찾지 못하면 상위 부모 타입으로 기능을 찾아서 실행함. 기능을 찾지 못하면 컴파일 오류 발생
오버로딩(Overloading)과 오버라이딩(Overriding)
메서드 오버로딩:
메서드 이름이 같고 매개변수(파라미터)가 다른 메서드를 여러개 정의하는 것을 메서드 오버로딩(Overloading)이라 한다.
오버로딩은 번역하면 과적인데, 과하게 물건을 담았다는 뜻이다.
따라서 같은 이름의 메서드를 여러개 정의했다고 이해하면 된다.
메서드 오버라이딩:
메서드 오버라이딩은 하위 클래스에서 상위 클래스의 메서드를 재정의하는 과정을 의미한다.
따라서 상속 관계에서 사용한다.
부모의 기능을 자식이 다시 정의하는 것이다.
오버라이딩을 단순히 해석하면 무언가를 넘어서 타는 것을 말한다.
자식의 새로운 기능이 부모의 기존 기능을 넘어 타서 기존 기능을 새로운 기능으로 덮어버린다고 이해하면 된다.
오버라이딩을 우리말로 번역하면 무언가를 다시 정의한다고 해서 재정의라 한다.
상속 관계에서는 기존 기능을 다시 정의한다고 이해하면 된다.
실무에서는 메서드 오버라이딩, 메서드 재정의 둘다 사용한다.
부모 타입의 변수가 자식 인스턴스를 참조한다.
Parent poly = new Child()
Child 인스턴스를 만들었다.
이 경우 자식 타입인 Child 를 생성했기 때문에 메모리 상에 Child 와 Parent 가 모두 생성된다.
생성된 참조값을 Parent 타입의 변수인 poly 에 담아둔다.
부모는 자식을 담을 수 있다.
부모 타입은 자식 타입을 담을 수 있다.
'CODING > 스파르타 내일배움캠프 TIL' 카테고리의 다른 글
24_음양 더하기_자바 강의 다형성, Object_25.1.15(수) (0) | 2025.01.15 |
---|---|
23_나누어 떨어지는 숫자 배열_키오스크 필수과제 레벨 3,4,5 구현_계산기 과제 피드백 내용_25.1.14(화) (0) | 2025.01.14 |
21_콜라츠 추측_계산기 과제 해설_25.1.10(금) (0) | 2025.01.10 |
20_두 정수 사이의 합_개인 과제 정리_튜터님 특강_25.1.9(목) (0) | 2025.01.09 |
계산기 개인과제 관련 트러블슈팅 TIL 모음 (0) | 2025.01.09 |