반응형
반응형

 

문제

괄호 회전하기 문제는 처음에 이해하기 어려웠습니다.

이 문제에서 중요한건 문자열만큼 for문을 돌리는 것, for ... else ... 사용해서 answer 값 증가 또는 유지 하는 것입니다.

 

 

자세한 내용!

 

코드

1. 스택

from collections import deque

def solution(s):
    answer = 0
    s = deque(s)
    
    for i in range(len(s)):
        s.rotate(-1)
        stack = []
        for ch in s:
            if ch == '(' or ch == '{' or ch == '[':
                stack.append(ch)
            else:
                if not stack:
                    break

                rear = stack.pop()
                if ch == ')' and rear != '(':
                    break
                elif ch == '}' and rear != '{':
                    break
                elif ch == ']' and rear != '[':
                    break
        
        else:
            if len(stack) == 0:
                answer += 1

    return answer

 

 

 

공부

- deque

- for ... else ...

 

반응형
반응형
반응형

런타임 에러가 발생할   수 있는 원인!

  1. 배열에 할당된 크기를 넘어서 접근했을 때
  2. 전역 배열의 크기가 메모리 제한을 초과할 때
  3. 지역 배열의 크기가 스택 크기 제한을 넘어갈 때
  4. 0으로 나눌 떄
  5. 라이브러리에서 예외를 발생시켰을 때
  6. 재귀 호출이 너무 깊어질 때
  7. 이미 해제된 메모리를 또 참조할 때
  8. 프로그램(main 함수)이 0이 아닌 수를 반환했을 때

 

참조

https://www.acmicpc.net/board/view/22980

 

글 읽기 - 주로 런타임 에러가 발생하는 이유는 무엇인가요?

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

 

반응형
반응형
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/138476

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

귤의 개수와 귤의 크기를 받아 같은 크기의 귤을 개수만큼 리턴할 때 가작 적은 숫자 구하시오. 

 

시도

- 귤의 개수가 1개면 1을 바로 리턴합니다.

- 귤의 크기 배열 값의 같은 값을 몇개씩 가지고 있는지 구합니다.

- 가장 많이 같은 값을 가지고 있는 순서대고 정리를 합니다.

 

코드

1. 첫 번째 시도

import time
def solution(k, tangerine):
    if k == 1: return 1

    answer = 0
    st = time.time()
    
    counter = [0] * len(set(tangerine))
    for x in tangerine:
    	try: counter[x-1] += 1
    	except: counter[x-1] = 1
    
    counter.sort(reverse=True)
    
    for x in counter:
        answer += 1
        k = k - x
        if k <= 0:
            break
    
    end = time.time()
    print(f'time = {st - end}')
    return answer

런타임 에러가 발생했습니다.

 

2.  런타임 에러 해결 후 코드

def solution(k, tangerine):
    if k == 1: return 1
    answer = 0
    
    counter = [0] * max(tangerine)
    for x in tangerine:
    	try: counter[x-1] += 1
    	except: counter[x-1] = 1
    
    counter.sort(reverse=True)
    
    for x in counter:
        answer += 1
        k = k - x
        if k <= 0:
            break
    return answer

 

 

반응형
반응형
반응형

 

문제

GitHub에 push 하는 도중에 "fatal: 관계 없는 커밋 내역의 병합을 거부합니다" 에러가 발생했습니다.

 

해결

> git fetch --all # 원격 저장소의 모든 커밋을 가져옵니다.
> git reset --hard origin/master
> git push origin master
반응형

'IT' 카테고리의 다른 글

Jupyter Notebook not trusted  (0) 2023.05.06
'list' object is not callable  (0) 2023.04.23
fatal: couldn't find remote ref master  (0) 2023.04.20
You may want to try Git Large File Storage - https://git-lfs.github.com  (2) 2023.04.20
[python] sort()  (0) 2023.04.18
반응형

해결

GitHub에 접속하여 branch 이름을 확인 후 수정하면됩니다.

반응형

'IT' 카테고리의 다른 글

'list' object is not callable  (0) 2023.04.23
fatal: 관계 없는 커밋 내역의 병합을 거부합니다  (0) 2023.04.20
You may want to try Git Large File Storage - https://git-lfs.github.com  (2) 2023.04.20
[python] sort()  (0) 2023.04.18
MPS  (0) 2023.04.07
반응형
반응형

상황

100mb 이상의 파일을 GitHub에 올릴 때 에러가 발생합니다.

 

 

해결

lfs 설치해서 올리면 됩니다.

* GitHub setting에 들어가서 archives section 체크를 해줍니다.

설치 방법

1. git-lfs를 설치합니다.

# Ubuntu
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs

# Mac
brew install git-lfs

# CentOS
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash
sudo yum install git-lfs

 

2. Repository에 lfs를 적용합니다.

> git lfs install

# 이전에 해당 업로드 파일이 있으면 기록 제거를 합니다
> git rm -r --cached "*"

 

3. Repository 내에서 업로드 할 파일을 track 합니다.

> git lfs track "파일명"

 

4. .gitattributes와 함께 add, commit, push  합니다.

> git add .gitattributes
> git add "파일명"
> git commit -m "메세지"
> git push origin master
반응형

'IT' 카테고리의 다른 글

'list' object is not callable  (0) 2023.04.23
fatal: 관계 없는 커밋 내역의 병합을 거부합니다  (0) 2023.04.20
fatal: couldn't find remote ref master  (0) 2023.04.20
[python] sort()  (0) 2023.04.18
MPS  (0) 2023.04.07
반응형
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12939

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

문자열로 된 숫자에서 최소값과 최대값을 구한 후 문자열로 return.

(자세한 내용은 상단 프로그래머스 사이트에서 확인!)

 

시도

1. split(" ") 사용하여 문자열 값을 나눕니다.

2. map()을 통해 문자열을 정수 값으로 변경합니다.

3. map()을 사용 후 min()과 max() 사용하여 return 할려고 했지만 에러가 발생했습니다.

* ValueError: max() arg is an empty sequence

4.map()을 값을 다시 list() 함수를 사용하여 리스트 형태로 만들어 준 후 min()과 max() 값을 사용하여 결과 값을 return 했습니다.

 

알아야할 것

- split()

- map()

- list()

 

정답

def solution(x):
    arr = list(map(int, x.split()))
    return str(min(arr)) + " " + str(max(arr))
반응형
반응형
반응형

 

상황

max()와 min() 함수를 사용하다 ValueError: max() arg is an empty sequence 에러 메세지가 떳습니다.

더 다세하게는 아래 코드를 확인해주세요~

def solution(x):
    arr = map(int, x.split())
    return str(min(arr)) + " " + str(max(arr))

 

arr의 type을 확인한 결과 <class 'map'>인걸 확인헀습니다.

그리고 min() 또는 max()를 사용 후 arr안에 있는 값을 꺼낼 수 없다는 것을 확인했습니다.

 

해결

- map()을 list()로 감싸서 list 형태로 만듭니다.

 

 

반응형

'Python' 카테고리의 다른 글

zip()  (0) 2023.05.03
combinations()  (0) 2023.05.03
[panda]info()  (0) 2023.04.26
cannot import name 'fl_score' from 'sklearn.metrics'  (0) 2023.04.26
IndentationError: unindent does not match any outer indentation level  (0) 2023.04.25

+ Recent posts