TIL-220220

POINT·2022년 2월 20일
0

python


  • javascript vs python
    프로그래머스 - 체육복
    https://programmers.co.kr/learn/courses/30/lessons/42862
    javascript로 풀었던 것을 python으로 다시 구현하는데
    javascript에서는 생각안해도 됐었던 array 범위 문제가 python에서 생겨서 수정해서 풀었다.
    첫번째 index와 마지막 index에서 앞뒤사람 여분유무 체크할 때 예외사항을 처리해줬다.

    function solution(n, lost, reserve) {
       var answer = 0;
       let studentInfo = [];
       for (let i = 0; i < n; i++) // 체육복유무 확인을 위한 배열 초기화
           studentInfo[i] = 1;
       for (let i = 0; i < lost.length; i++) // 체육복없으면 --
           studentInfo[lost[i] - 1]--;
       for (let i = 0; i < reserve.length; i++) // 여벌있으면 ++
           studentInfo[reserve[i] - 1]++;
       for (let i = 0; i < studentInfo.length; i++) {
           if (studentInfo[i] == 0) { // 체육복이 없으면
               if (studentInfo[i - 1] == 2) { // 이웃번호에게 빌린다
                   studentInfo[i - 1]--;
                   studentInfo[i]++;
               } else if (studentInfo[i + 1] == 2) {
                   studentInfo[i + 1]--;
                   studentInfo[i]++;
               }
           }
           if (studentInfo[i] != 0)
               answer++;
       }
       return answer;
    }
    def solution(n, lost, reserve):
       answer = 0
       studentInfo = [1 for i in range(n)]
       for i in range(len(lost)):
           studentInfo[lost[i] - 1] -= 1
       for i in range(len(reserve)):
           studentInfo[reserve[i] - 1] += 1
       for i in range(len(studentInfo)):
           if studentInfo[i] == 0:
               if i == 0:
                   if studentInfo[i + 1] == 2:
                       studentInfo[i + 1] -= 1
                       studentInfo[i] += 1
               elif i == len(studentInfo)-1:
                   if studentInfo[i - 1] == 2:
                       studentInfo[i - 1] -= 1
                       studentInfo[i] += 1
               else:
                   if studentInfo[i - 1] == 2:
                       studentInfo[i - 1] -= 1
                       studentInfo[i] += 1
                   elif studentInfo[i + 1] == 2:
                       studentInfo[i + 1] -= 1
                       studentInfo[i] += 1
       for i in range(len(studentInfo)):
           if studentInfo[i] != 0:
               answer += 1
       return answer
profile
기록은 기억을 지배한다.

0개의 댓글