728x90

[Iterator]

  • List / Set 과 같은 것을 순회 할 때 사용한다.
  • 처음으로 커서를 옮긴 후, 다음 한칸씩 이동 하면서 커서 위치에 있는 데이터를 가져온다.
  • 데이터를 순회하면서 필요 없는 데이터가 발견되면 그 자리에서 삭제도 가능하다.
  • 다만 단방향의 반복만가능하고 값을 변경하거나 추가가 불가능 하다는 단점이 있다.       

[Iterator 선언 방법]

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("자바");
    list.add("파이썬");

    Iterator<String> itertator = list.iterator();
}

 

[Iterator의 3가지 함수 ]

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("자바");
    list.add("X");
    list.add("파이썬");

    Iterator<String> iterator = list.iterator();

    while(iterator.hasNext()){
        String s = iterator.next();
        if (s.contains("X")) {
            iterator.remove(); // 해당 커서에 위치하는 데이터 삭제 
        }
    }

    iterator = list.iterator(); // 커서를 맨 처음으로 이동
    while(iterator.hasNext()){
        System.out.println(iterator.next()); // 다음 데이터로 이동
    }

    
}
  • iterator()를 사용하여 커서를 맨 처음으로 이동시킬 수 있다. 
  • hasNext()를 사용하여 Iterator안에 값이 있는지 확인할 수 있다.
  • remove()를 사용하여 해당 커서에 위치하는 데이터를 삭제할 수 있다.    
728x90

'Java' 카테고리의 다른 글

익명 클래스  (0) 2023.06.13
커피 가게 프로그램 만들기  (0) 2023.06.12
[Collection 프레임워크] - HashMap  (0) 2023.06.12
[Collection 프레임워크] - HashSet  (0) 2023.06.12
[Collection 프레임워크] - LinkedList  (0) 2023.06.12
728x90

[HashMap]

  • HashMap은 Map인터페이스에 속해있는 컬렉션이다. 
  • 데이터는 (Key, Value)인 1:1 구조로 이루어져 있다.  
  • 키는 고유한 속성이지만 값은 고유한 속성이 아니다.
  • 그래서 같은 키의 값을 삽입하려고 하면 해당 키의 값이 변경 된다.
  • 키는 중복이 되지 않고, 값은 중복이 될 수 있다. (null 값도 저장 가능) 

[HashMap선언 방법]

public static void main(String[] args) {
    HashMap<String, Integer> map = new HashMap<>();
    HashMap<String, String> map = new HashMap<>();
}
  •   HashMap<데이터 타입, 데이터 타입> 변수명 = new HashMap<>()으로 선언할 수 있다.  

 

[HashMap데이터 추가]

public static void main(String[] args) {
    HashMap<String, Integer> map = new HashMap<>();

    // 데이터 추가
    map.put("아메리카노", 3000);
    map.put("라떼", 4000);
}
  • put(key, value)를 사용하여 값을 추가할 수 있다.
  • 선언한 타입에 맞는 데이터만 추가할 수 있다.
  • 같은 키의 값을 추가 한다면 마지막에 넣은 vlaue로 변경된다.   

 

[HashMap데이터 조회]

public static void main(String[] args) {
    HashMap<String, Integer> map = new HashMap<>();

    // 데이터 추가
    map.put("아메리카노", 3000);
    map.put("라떼", 4000);
    
    System.out.println("아메리카노의 가격 : " + map.get("아메리카노"));
    System.out.println("라떼의 가격 : " + map.get("라떼"));
    
    // Key 확인
    for (String key : map.keySet()) {
        System.out.println(key);
    }

    // Value 확인
    for (int value : map.values()) {
        System.out.println(value);
    }
    
    // 키와 값 동시에 확인하기
    for (String key : map.keySet()) {
        System.out.println("키 : " + key + "값 : " + map.get(key));
    }
}
  • get(key)를 입력하면 key에 맞는 value가 출력 된다.
  • keyset(), values()를 사용하여 key와 vlaue를 확인 할 수 있다.

 

[HashMap데이터 삭제]

public static void main(String[] args) {
    HashMap<String, Integer> map = new HashMap<>();

    // 데이터 추가
    map.put("아메리카노", 3000);
    map.put("라떼", 4000);
    
    // 데이터 삭제
    map.remove("아메리카노");
    map.clear();
}
  • remove(key)로 key를 삭제할 수 있다.
  • clear()를 사용하여모든 키값들을 삭제할 수 있다.  

 

[HashMap크기 구하기]

public static void main(String[] args) {
    HashMap<String, Integer> map = new HashMap<>();

    // 데이터 추가
    map.put("아메리카노", 3000);
    map.put("라떼", 4000);
    
    // 크기 구하기
    System.out.println(map.size());
}
  • size()를 사용하여 크기를 구할 수 있다.
728x90
728x90

[HashSet]

HashSet은 Set 인터페이스에서 지원하는 구현 클래스이다.

HashSet의 특징은 중복을 허용하지 않고, 자동으로 중복 데이터를 제거할 수 있다.

또, 순서도 보장 되지 않는다는 특징이 있고, null도 허용한다.

 

💡순서를 보장하고 싶다면 LinkedHashSet을 사용하면 된다.  

 

[HashSet선언 방법]

public static void main(String[] args) {
	HashSet<String> set = new HashSet<>();
}
  • HashSet<데이터 타입> 변수명 = new HashSet<>()으로 선언할 수 있다.  

 

[HashSet데이터 추가]

public static void main(String[] args) {
    HashSet<String> set = new HashSet<>();

    // 데이터 추가
    set.add("자바");
    set.add("파이썬");
}
  • add()를 사용하여 값을 추가할 수 있다.
  • 지정한 타입에 맞  데이터만 추가할 수 있다.    

 

[HashSet데이터 조회]

public static void main(String[] args) {
    HashSet<String> set = new HashSet<>();

    // 데이터 추가
    set.add("자바");
    set.add("파이썬");

    // 데이터 조회
    Sysetm.out.println(set);
    for(String s : set){
        Sysetm.out.println(s);
    }
}
  • 단순 출력문을 이용하여 데이터를 출력할 수 있다. = > 결과 : [자바, 파이썬] 
  • 반복문을 이용하여 데이터를 조회할 수 있다. 

 

[HashSet데이터 삭제]

public static void main(String[] args) {
    HashSet<String> set = new HashSet<>();

    // 데이터 추가
    set.add("자바");
    set.add("파이썬");

    // 데이터 삭제
    set.remove("파이썬");
    set.clear();
}
  • remove(value)로 값을 직접 입력하여 삭제할 수 있다.
  • clear()를 사용하여 값 전체를 삭제할 수 있다.  

 

[HashSet데이터 검색하기]

public static void main(String[] args) {
    HashSet<String> set = new HashSet<>();

    // 데이터 추가
    set.add("자바");
    set.add("파이썬");

    // 데이터 검색
    if(list.contains("자바")){
        System.out.println("글자 검색하기");
    }
}
  • contains()를 사용하여 원하는 데이터를 검색할 수 있다. 

 

[HashSet크기 구하기]

public static void main(String[] args) {
    HashSet<String> set = new HashSet<>();

    // 데이터 추가
    set.add("자바");
    set.add("파이썬");

    // 크기 구하기
    System.out.println(set.size());
 }
  • size()를 사용하여 해당 리스트의 크기를 구할 수 있다.

 

728x90
728x90

[LinkedList]

  • ArrayLsit와는 다르게 각각의 노드를 연결하는 방식을 사용한다.
    • 여기서 노드란 실제로 데이터가 저장되는 그릇과 같은 것
  • 데이터를 삭제하고 추가하는 것이 용이하다.
  • 위치에 상관 없이 데이터를 삭제 및 추가 하는데 변경되는 노드만 연결해주면 된다.
  • ArrayList는 검색이 많은 경우에 사용되고, LinkedList는 데이터의 추가 / 삭제가 많을 경우 사용된다. 

(예시) 의자 없이 사람들이 손을 잡고 있는데 중간에 사람이 들어가려하면 잡고 있던 손을 놓고 그 자리로 들어갈 수 있다.

 

[LinkedList선언 방법]

 public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
 }
  • <> 안에는 Integer, String, Character, Student, Phone 등과 같은 다양한 타입이 들어 올 수 있다.  

[LinkedList데이터 추가]

 public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    
    // 데이터 추가
    list.add("자바");
    list.add("파이썬");
    list.addFrist("C언어");
    list.addLast("자바스크립트");
 }
  • add(Object)를 사용하여 인덱스 마지막에 데이터를 추가한다.
  • add(Object, index)를 사용하여 지정한 인덱스에 값을 추가할 수 있다. 
  • addFirst()를 사용하여 첫번째에 데이터를 추가할 수 있다.
  • addLast()를 사용하여 마지막에 데이터를 추가할 수 있다. 

 

[LinkedList데이터 조회]

 public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();

    // 데이터 추가
    list.add("자바");
    list.add("파이썬");

    // 데이터 조회
    System.out.println(list.get(0));
    System.out.println(list.get(1));
    System.out.println(list.getFirst());
    System.out.println(list.getLast());
 }
  • get(index)를 사용하여 해당 인덱스의 데이터를 조회할 수 있다. 
  • getFrist()를 사용하여 첫번째 데이터를 조회할 수 있다.
  • getLast()를 사용하여 마지막 데이터를 조회할 수 있다.  
  • 반복문을 사용하여 해당 인덱스 혹은 전체 데이터를 조회할 수 있다.

 

[LinkedList데이터 삭제]

 public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();

    // 데이터 추가
    list.add(1);
    list.add(2);

    // 데이터 삭제
    list.remove(1);
    list.clear();
    list.removeFirst(); // 처음 데이터
    list.removeLast(); // 마지막 데이터
 }
  • remove()를 사용하여 인덱스 혹은 값을 직접 입력하여 삭제할 수 있다.
  • removeFirst()를 사용하여 처음 데이터를 삭제할 수 있다.
  • removeLast()를 사용하여 마지막 데이터를 삭제할 수 있다.       
  • clear()를 사용하여 값 전체를 삭제할 수 있다.  

 

[LinkedList데이터 변경]

 public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    
    // 데이터 추가
    list.add(1);
    list.add(2);

    // 데이터 변경
    list.set(0, 3);
    list.set(1, 5);
 }
  • set(index, Object)를 사용하여 값을 변경할 수 있다. 
  • 데이터를 변경하려면 해당 데이터의 인덱스를 알아야 한다. 

 

[LinkedList데이터 검색하기]

 public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();

    // 데이터 추가
    list.add("자바");
    list.add("파이썬");

    // 데이터 검색
    if(list.contains("자바")){
        System.out.println("글자 검색하기");
    }
 }
  • contains()를 사용하여 원하는 데이터를 검색할 수 있다. 

 

[LinkedList 크기 구하기]

 public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();

    // 데이터 추가
    list.add("자바");
    list.add("파이썬");

    // 크기 구하기
    System.out.println(list.size());
 }
  • size()를 사용하여 해당 리스트의 크기를 구할 수 있다.
728x90
728x90

[컬렉션 프레임워크]

  • 컬렉션 프레임 워크에는 List / set / map등의 인터페이스를 제공한다.
  • 많은 데이터를 쉽고 편리하고 효과적으로 관리하기 위에 자바에서 제공하는 클래스의 모음이다.

[ArrayList]

  • List 인터페이스에서 상속 받아 사용된다.
  • ArrayList는 객체가 추가 되면서 용량이 초과 되면 초과된 용량 만큼 길이가 늘어나게 된다.

(예시) 여러 명이 앉을 수 있는 의자에서 중간에 사람이 앉으려 하면 그 위치부터 모든 사람이 한칸씩 이동해주어야한다.

 

[ArrayList 선언 방법]

 public static void main(String[] args) {
    ArrayList<Integer> list = new ArrayList<>(); 
 }
  • <> 안에는 Integer, String, Character, Student, Phone 등과 같은 다양한 타입이 들어 올 수 있다.  

[ArrayList 데이터 추가]

 public static void main(String[] args) {
    ArrayList<Integer> list = new ArrayList<>(); 
    
    // 데이터 추가
    list.add(1);
    list.add(2);
 }
  • add(Object)를 사용하여 인덱스 마지막에 데이터를 추가한다.
  • add(Object, index)를 사용하여 지정한 인덱스에 값을 추가할 수 있다. 

 

[ArrayList 데이터 조회]

 public static void main(String[] args) {
    ArrayList<Integer> list = new ArrayList<>(); 

    // 데이터 추가
    list.add(1);
    list.add(2);

    // 데이터 조회
    System.out.println(list.get(0));
    System.out.println(list.get(1));
 }
  • get(index)를 사용하여 해당 인덱스의 데이터를 조회할 수 있다. 
  • 반복문을 사용하여 해당 인덱스 혹은 전체 데이터를 조회할 수 있다.   

 

[ArrayList 데이터 삭제]

 public static void main(String[] args) {
    ArrayList<Integer> list = new ArrayList<>(); 

    // 데이터 추가
    list.add(1);
    list.add(2);

    // 데이터 삭제
    list.remove(1);
    list.clear();
 }
  • remove(Object)를 사용하여 Object와 같은 값을 삭제한다.
  • clear()를 사용하여 값 전체를 삭제할 수 있다.  

 

[ArrayList 데이터 변경]

 public static void main(String[] args) {
    ArrayList<Integer> list = new ArrayList<>(); 

    // 데이터 추가
    list.add(1);
    list.add(2);

    // 데이터 변경
    list.set(0, 3);
    list.set(1, 5);
 }
  • set(index, Object)를 사용하여 값을 변경할 수 있다. 
  • 데이터를 변경하려면 해당 데이터의 인덱스를 알아야 한다. 

 

[ArrayList 데이터 검색하기]

 public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>(); 

    // 데이터 추가
    list.add("자바");
    list.add("파이썬");

    // 데이터 검색
    if(list.contains("자바")){
        System.out.println("글자 검색하기");
    }
 }
  • contains(Object)를 사용하여 원하는 데이터를 검색할 수 있다. 

 

[ArrayList크기 구하기]

 public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();

    // 데이터 추가
    list.add("자바");
    list.add("파이썬");

    // 크기 구하기
    System.out.println(list.size();
 }
  • list.size()를 사용하여 해당 리스트의 크기를 구할 수 있다.
728x90
728x90

[제네릭이란?]

- 다양한 타입의 객체를 지원하는클래스, 인터페이스 또는 메소드를 정의하는 방법

- 같은 동작을 하는 클래스나 메소드를 계속 구현할 필요 없이 한번 정의하면 여러 타입에서 사용가능 하다.

- 제네릭은 다양한 타입의 '객체'를 지원한다고 하였다. 즉, 기본 자료형은 제네릭 타입으로 사용 불가능하다.

- 기본 자료형을 사용하려면 Wrapper 클래스를 사용하면 된다.    

 

[제네릭의 장점]

1. 제네릭을 사용하면 잘못된 타입이 들어 오는 것을 컴파일 단계에서 방지할 수 있다.

2. 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해 줄 필요가 없다. 즉, 관리가 편리함.

3. 비슷한 코드를 구현할 경우 여러 타입에서 사용가능하기 때문에 재사용성이 높다.

 

[코드]

public static void main(String[] args){

Integer intArray = {1, 2, 3, 4, 5};
String stringArray = {"가", "나", "다"};

arr(intArray);
arr(stringArray);

}

private static <T> void arr(T[] arr){
    for(T type : arr){
        System.out.println(t);
    }
}
  • 위의 코드처럼 <T : Type, K : Key, V : Value, E : Element 등등 > 안에 타입을 지정해주면 된다. 
  • ArrayList<String>, List<T> 등등 이런 것들도 제네릭이다.  

[제네릭 클래스]

- 제네릭 클래스도 위에 설명한 제네릭과 같다.

 

아래 코드로 살펴보면 

 

[코드]

public static void main(String[] args) {
	
    FixPhone<String> fix = new FixPhone<>("홍길동");
    fix.come();
    
    FixPhone<Integer> fix2 = new FixPhone(1);
    fix.com();

}

public class FixPhone <T>{
    public T name; // 손님 이름

    public fixPhone(T name){
        this.name = name;
    }

    public void come(){
        System.out.println(name + " 고객님 차례가 되었습니다.);
    }
}

- 클래스 명 뒤에 <>로 타입을 지정하여 사용할 수 있다.

 

[Wrapper 클래스]

Wrapper 클래스는 기본 자료형을 객체 형태로 만들어 사용할 수 있도록 해주는 것이다.

기본자료형 Wrapper 클래스
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
void Void

 

728x90

'Java' 카테고리의 다른 글

[Collection 프레임워크] - LinkedList  (0) 2023.06.12
[Collection 프레임워크] - ArrayList  (0) 2023.06.12
인터페이스 - 놀이공원 티켓 구입하기  (0) 2023.06.08
인터페이스  (0) 2023.06.08
추상클래스  (0) 2023.06.08
728x90

[문제 설명]

정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 마지막 원소까지 n개 간격으로 저장되어있는 원소들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.

 

[입출력 예]

num_list n result
[4, 2, 6, 1, 7, 6] 2 [4, 6, 7]
[4, 2, 6, 1, 7, 6] 4 [4, 7]

 

[차근 차근 생각해보기]

  • 이름이 arr인 ArrayList를 만든다.
  • num_list의 길이 만큼 돌면서 i가 n의 배수이면 arr에 num_list의 i번째를 넣어준다.
  • arr의 사이즈만큼의 answer 배열을 만들어 준 후
  • arr의 size만큼 돌면서 answer배열에 arr의 i번째 요소를 Integer에서 int로 바꾸어 넣어준다.
  • answer를 리턴 해준다.

 

[결과]

<수정 전>

class Solution {
    public int[] solution(int[] num_list, int n) {
       int[] answer = new int[num_list.length/n];

        for(int i = 0; i < num_list.length; i++){
                if(i%n == 0){
                    answer[i/n] = num_list[i];
                }
        }

        return answer;
    }
}

 

<수정 후>

import java.util.ArrayList;
class Solution {
    public int[] solution(int[] num_list, int n) {

        ArrayList<Integer> arr = new ArrayList<>();

        for(int i = 0; i < num_list.length; i++){
                if(i%n == 0){
                    arr.add(num_list[i]);
                }
        }
        int[] answer = new int[arr.size()];

        for(int i = 0; i < arr.size(); i++){
            answer[i] = arr.get(i).intValue();
        }

        return answer;
    }
}

 

[반성할 점]

<수정 전>

 answer 배열을 num_list를 n으로 나눈 길이 만큼 선언 해주었다.

n개 간격이면 n의 배수가 되어야 하기 때문에 'i가 n의 배수이면' 이라는 조건문을 넣어주었다.

answer의 i번째에 num_list의 i번째를 넣어주려 했으나

이렇게 되면 answer의 i번째에 0,1,2,3 이런 순서가 아닌 n의 배수가 들어가게 되어 오류가 났다.

 

 생각해보니 n이 2이라면 num_list의 0, 2, 4, 6 순서로 들어갈 것이고, 

num_list[0] => answer[0] / num_list[2] => answer[1] / num_list[4] => answer[2]의 방식으로 들어가야했다.

그래서 answer[i / n]를 해주면 위와 같은 방식으로 값이 들어갈 수 있었다.

 

<수정 후>

하지만 위의 방식은 n의 2일 경우였다. 예제인 n이 4일 경우엔 answer 배열의 길이를 num_list의 n으로 나누게 된다면

6 / 4 = 1이 되어 answer 배열의 길이는 1이 되어 오류가 났다.

 

그래서 answer 배열의 길이를 신경 쓰지 않고 하기 위해 ArrayList로 만들어 ArrayList에 'i가 n의 배수이면' num_list의 i번째를 넣어 주었고 배열로 바로 변환하여 return을 해주려 했다. 생각해보니 ArrayList는 Wrapper 클래스를 사용하고 있어 arr인 ArrayList를 반복문으로 돌면서 intValue()라는 메소드를 사용 하여 Integer 객체에서 int형 값을 뽑아주는 메소드를 사용하였다.

 

ArrayList를 사용하는 것은 내 생각이 아닌 친구의 제안이었다..ㅠㅠ 아직 저런 사고까지 하는 것은 힘든 것 같다..

그래도 ArrayList라는 힌트를 얻어 나머지는 검색하면서 잘 해결해냈다..!! 이런 저런 케이스를 경험하는 것이라고 생각하고 문제를 많이 많이 풀어보고 내 것으로 만들어야겠다.

 

728x90
728x90

[문제 설명]

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 뒤의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.

 

[입출력 예]

my_string n result
"ProgrammerS123" 11 "grammerS123"
"He110W0r1d" 5 "W0r1d"

 

[차근 차근 생각해보기]

  • my_string 문자열 뒤에서 n번째부터 my_string의 마지막까지 잘라주고
  • answer에 넣어준 뒤 reutrn 해주기

 

[결과]

class Solution {
    public String solution(String my_string, int n) {
        String answer = my_string.substring(my_string.length()-n, my_string.length());
        return answer;
    }
}

 

[반성할 점]

  • 뒤의 n번째부터 마지막까지 자른 다는 생각을 하지 못했다.
  • java에서 문자열 자르는 방법을 검색해보고 난 후 저런 방법이 있다는 것을 보았다.
  • 아직 조금 더 차근차근 생각하는 것이 많이 부족한 것 같다.
  • 조급해하지 말고 차근 차근 생각하기..!
728x90
728x90

[문제 설명]

정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 n 번째 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요.

 

[입출력 예]

num_list n result
[2, 1, 6] 1 [2]
[5, 2, 1, 7, 5] 3 [5, 2, 1]

 

[차근 차근 생각해보기]

  1. answer의 배열의 길이를 n까지로 정해준다.
  2. n의 길이까지 돌면서
  3. answer 배열에 num_list의 i번째 요소를 넣어준다.

 

[결과]

<수정 전>

class Solution {
    public int[] solution(int[] num_list, int n) {
        int[] answer = new int[n];
        for(int i = 0; i < num_list.length; i++){
            if(i < n){
                answer[i] = num_list[i];
            }
        }
        return answer;
    }
}

 

<수정 후>

class Solution {
    public int[] solution(int[] num_list, int n) {
        int[] answer = new int[n]; 
        for(int i = 0; i < n; i++){
            answer[i] = num_list[i];
        }
        return answer;
    }
}

 

[반성할 점]

<수정 전>

  • answer 배열을 n만큼 정해주어야 n의 길이 만큼 배열에 요소가 담길 것이라고 생각하지 못했다.
  • i가 n보다 작은 것은 배열의 인덱스는 0부터 시작하니까 i가 n보다 작아야 한다.
  • i번째 요소를 answer의 i번째에 담아주면 n번째 원소까지 값이 들어갈 것이다.

<수정 후>

  • 수정 전 코드는 불필요한 코드가 있었다.
  • num_list의 첫번째 원소부터 n번째 원소까지 넣는 것이기 때문에
  • n번째까지 돌면서 num_list의 i번째를 answer의 i번째에 넣어주고
  • answer를 리턴해주면 되는 것인데 굳이 조건문을 사용하여 불필요한 코드를 작성했었다.
  • 조건을 잘 생각하며 차근 차근 풀기..!
728x90
728x90

[문제 설명]

정수 리스트 num_list와 찾으려는 정수 n이 주어질 때, num_list안에 n이 있으면 1을 없으면 0을 return하도록 solution 함수를 완성해주세요.

 

[입출력 예]

num_list n result
[1, 2, 3, 4, 5] 3 1
[15, 98, 23, 2, 15] 20 0

 

[차근 차근 생각해보기]

  1. num_list의 길이까지 돌면서
  2. num_list의 i번째 요소가 n과 같으면 1을 리턴해주고
  3. 그게 아니면 0을 리턴해준다.
  4.  

[결과]

class Solution {
    public int solution(int[] num_list, int n) {
        int answer = 0;
        for(int i = 0; i < num_list.length; i++){
            if(num_list[i] == n){
                return 1;
            }
        }
        return answer;
    }
}

 

[반성할 점]

  • 처음에 for문 안에 n이면 answer에 1을 넣어주고 아니면 0을 넣어주도록 코드를 작성했다.
  • 계속 오류가 나서 생각해보니 위와 같은 코드면 num_list가 끝날 때까지 answer의 값이 계속 바뀔 것이고
  • 만약 num_list의 마지막 요소가 n과 같으면 1이 리턴되겠지만
  • 마지막 요소가 n과 같지 않으면 0이 나올 것이기 때문에
  • n이 i번째의 요소와 같으면 바로 return 1을 해주는 것이 맞다고 생각하였다.
728x90

+ Recent posts