< 문제 >

 

< 정답 코드 >

 

< 설명 >

- 정답 answers의 값과 수포자의 정답 list1,2,3을 비교할 것이다.

- 비교 후 맞춘 정답을 카운트하기 위해서 count1,2,3 변수와 이 변수를 임시로 담을 answer_temp를 만든다.

- answers 가 기준이 되도록 answers의 길이만큼 수행하는 반복문

- list1,2,3 그리고 answers는 길이가 다른데, list1,2,3은 반복되므로, lastIndex에 도달했을 때, 0으로 돌아가게 하려면

  증가값 i를 각 수포자 정답 리스트의 길이로 나눠주면 가능하다.

- answer_temp에는 3명의 수포자가 맡힌 정답 갯수가 순서대로 들어있다.

- answer_temp의 index는 0~2이고, 문제에서 요구하는 정답은 1, 2, 3 중에서 답변해야하므로 person Index에 + 1을 

  해준 값이 문제에서 요구하는 n번 수포자를 가리키는 값이 된다.

 

< 배운 것 >

1) 길이가 다른 배열들이 있을 때 길이가 더 짧은 배열의인덱스 전체를 반복하면서 비교하는 로직을 짤 수 있다.

- 길이가 더 긴 배열의 길이를 반복문의 조건부로 한다.

- 길이가 더 짧은 배열과 비교할 때, 배열의 인덱스는 증감값 i를 짧은 배열의 길이(len)로 나눈 몫이다.

 

2) for a, b in enumerate(array):  형태에서 a는 인덱스, b는 a 인덱스에 해당하는 값인 걸 안다.

 

 

< 문제 내용 >

 

 

 

< 코드 >

 

< 설명 >

1) maxLength

: answer가 가질 수 있는 최대값

2) spicieCount

: 중복된 종들을 중복이 없는 set함수로 분류

 

3) spicieCount가 maxLength보다 큰 경우( 데려갈 수 있는 폰켓몬 종의 수를 초과했다 ),   데려갈 수 있는 최대치인 maxLength가 정답이 된다.

 

4) spicieCount가 maxLength보다 작은 경우( 데려갈 수 있는 폰켓몬 종의 수가 적다 ),   있는 종을 다 데려간다. ( answer = spicieCount )

  

 

< 추가 설명 >

 

- set 함수의 특징

1) 중복을 허용하지 않는다.

2) 순서가 없다(unorderd).

3) 집합 자료형 set에 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환해야한다.

 

 

< 배운 것 >

- set함수를 통해 얻은 중복을 제거한 값이 갖는 의미를 안다.

 

 

 

0에서 시작하는 변수 answer가 주어진 배열 absolutes만큼의 길이를 반복해서 배열 signs와 absolutes의 모든 인덱스를 거치는데, signs[i]가 참이면 값을 더하고, 거짓이면 값을 빼준다.  

 

< 배운 것 >

- 파이썬의 증감 연산을 할 수 있다. ( x += n )

- 최대값/최소값 구하기 : 변수에 배열의 값 하나를 할당해서 배열 전체 요소에 비교시킨다.

 

1) 파이썬

arr = [1,3,5,4,2,8,6,9,7]

min = arr[8]
for i in range(0, len(arr)-1):
    if min > arr[i] :   # 부호만 바꾸면 최대값을 구할 수 있다.
        min = arr[i]
    print(min)

 

 

2) 코틀린

val arr: Array<Int> = arrayOf(1,3,5,4,2,8,6,9,7)
    
    var min = arr[0]
    for( i in 0 until arr.lastIndex){
        if(min > arr[i]){   // 부호만 바꾸면 최대값이 구해진다.
            min = arr[i]
        }
        println(min)
    }

 

+ Recent posts