❤️ 문제

이것이 코딩테스트다 p.99 

그리드 문제. 

 

❤️ 코드

아....또 map 함수 까먹었었다. ㅠㅠㅠ 당 장 기 억 해 라 

map(인자값 형식, 인자값)!!!

n, k = map(int, input().split(" "))

count = 0

while n > 1:
    if n%k==0:
        n = n//k
        count += 1
    else:
        n = n - 1
        count += 1

print(count)

 

2022.09.27

❤문제

https://www.acmicpc.net/problem/17413

❤풀이

 

- 처음에 접근했을땐 '<'가 시작하면 그 안에서 '>'가 나올때까지 while문을 돌게 하려고 했는데 그럴 필요없이 res에 넣어지는 순서를 차근차근 잘 생각하면 필요없다는 것을 깨달았다. 문제 이해는 제일 빨랐는데 코딩 짜는데 오래걸렸다 증말,, 분발하자~! 

sen = list(input())

tag = 0
res = ''
word = ''

for w in range(len(sen)):
    if sen[w] == '<':
        tag = 1
        res+=word[::-1]
        word=''
        res += sen[w]
        
    elif sen[w] == '>':
        tag = 0
        res += sen[w]
        
    elif tag==1:
        res += sen[w]
        
    elif sen[w]==' ':
        res+=word[::-1]
        res+=' '
        word = ''
        
    elif tag==0:
        word += sen[w]
#         print(word)
        
        
res += word[::-1]
print(res)

❤️ 문제

이것이 코딩테스트다 p.92

그리드 문제.

 

❤️풀이

 

처음 내 풀이,, map함수를 모르고 썼을때다

values = list(str(input()).split(" "))
lst = [2,4,5,4,6]
# lst = [3, 4, 3, 4, 3]


n = int(values[0])
m = int(values[1])
k = int(values[2])

ans, cnt = 0, 0

lst.sort()
first = lst[-1]
second = lst[-2]

while cnt < m:
    if first == second:
        ans +=first*m
        cnt += m
    else:
        ans += first * k
        cnt += k 
        ans = ans + second
        cnt += 1
print(ans)

이제 map 함수 기억하자~!! 아래는 적용 후

n, m, k = map(int, input().split())
lst = list(map(int, input().split()))

ans, cnt = 0, 0

lst.sort()
first = lst[-1]
second = lst[-2]

while cnt < m:
    if first == second:
        ans +=first*m
        cnt += m
    else:
        ans += first * k
        cnt += k 
        ans = ans + second
        cnt += 1
print(ans)

 

2022.09.22

하하 회사에서 전시 준비하느라 바빠서 아주아주 간단한 문제라도 풀고자는 오늘..!

재귀함수 문제 좀 더 풀어보면 좋을 거 같다!  for문 대신 사용할 수 있고 코드가 훨씬 간단해져서 좋다:)

https://www.acmicpc.net/problem/10870

 

 

내 코드

def fibonacci(n):
    if n<=1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

n = int(input())
print(fibonacci(n))

 

2023.01.08

- 문제: https://www.acmicpc.net/problem/2748

내 코드

n = int(input())

fiboo = []
num = 0
for i in range(n+1):
    if i==0:
        num = 0
    elif i <= 2:
        num = 1
    else:
        num = fiboo[-1]+fiboo[-2]
    fiboo.append(num)
print(fiboo[-1])

문제

https://www.acmicpc.net/problem/10162

 

 풀이

t = int(input())

button_list = [300,60,10]
ans = []
count = 0

if t%10 != 0:
    print(-1)
else:
    for b in button_list:
        count = t//b
        ans.append(count)
        t = t%b
    print(ans[0],ans[1],ans[2],sep=' ')

간단한 문제인데 코드는 좀 조잡해보여서 간단하게 변경해보았다!

t = int(input())

button_list = [300,60,10]

if t%10 != 0:
    print(-1)
else:
    for b in button_list:
        print(t//b, end = ' ')
        t = t%b

문제가 너무 길어서 이해하는데만 시간이 오래걸렸다x0x

다른 사람들이 푼 걸 보면 zip함수를 많이 사용하던데 이것도 공부해야겠다. enumerate함수랑 zip함수 for문에 적용해보기 연습하기!

❤️문제

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

❤️내 코드

def solution(survey, choices):
    answer = ''
    score_dict = {'R':0, 'T':0, 'C':0, 'F':0, 'J':0, 'M':0, 'A':0, 'N':0}
    scores = [3,2,1,0,1,2,3]
    for i in range(len(survey)):
        a = survey[i][0]  
        b = survey[i][1]  
        if choices[i] - 4 > 0:
            score_dict[b] += scores[choices[i]-1]  
        elif choices[i] -4 < 0:
             score_dict[a] += scores[choices[i]-1] 
        else:
            continue
    answer += "R" if score_dict["R"] >= score_dict["T"] else "T"
    answer += "C" if score_dict["C"] >= score_dict["F"] else "F"
    answer += "J" if score_dict["J"] >= score_dict["M"] else "M"
    answer += "A" if score_dict["A"] >= score_dict["N"] else "N"
    
    return answer

 

❤️다른 사람 코드 참고

def solution(survey, choices):

    my_dict = {"RT":0,"CF":0,"JM":0,"AN":0}
    for A,B in zip(survey,choices):
        if A not in my_dict.keys():
            A = A[::-1]
            my_dict[A] -= B-4
        else:
            my_dict[A] += B-4

    result = ""
    for name in my_dict.keys():
        if my_dict[name] > 0:
            result += name[1]
        elif my_dict[name] < 0:
            result += name[0]
        else:
            result += sorted(name)[0]

    return result

 

'Language & OS > Programmers' 카테고리의 다른 글

샘플 코딩 시험 문제  (0) 2023.10.27
[프로그래머스] 파이썬 둘만의 암호  (0) 2023.02.09
우분투 서버 내에서 jupyter notebook을 원격 접속하기

 

 

실행환경

OS : Ubuntu 20.04 LTS

Python : Python 3.8

pip : pip 22.1

 

1. Jupyter notebook 설치하기

$ sudo apt-get install jupyter

- 잘 설치 되었나 확인

jupyter --version

2. jupyter 설정하기

$ jupyter notebook --generate-config

3. .jupyter 경로로 들어가기 

    - 만약에 경로가 안들어가지면 다시 주피터를 다운 받아야함 

$ cd .jupyter

4. jupyter password 생성하기(생략가능)

$ ipython

위와 같이 In[1]이 뜨면 아래 코드 한줄씩 순서대로 실행

from notebook.auth import passwd
passwd
passwd()

enter password가 뜨면 원하는 패스워드를 입력하고 verify password로 한번 더 패스워드를 입력해준다.

그러면 어떤 알 수 없는 문자토큰을 주는데 이걸 메모장 같은데에 복사해둔다!

 

5. 앞서 생성했던 jupyter notebook config 파일 열어서 설정하기

$ vi jupyter_notebook_config.py

 i(코드 변경할 수 있도록 도와주는 키)를 누르고 아래와 같이 설정해준다.

c = get_config()
c.NotebookApp.allow_origin = "*"
c.NotebookApp.notebook_dir = "[사용자가 jupyter notebook 열었을때 보이고자하는 첫화면 경로 입력 ex) "/home/"]"
c.NotebookApp.ip = "0.0.0.0"
c.NotebookApp.port = 8888
c.NotebookApp.password = u'[패스워드 설정할 때 받았던 토큰 그대로 복사]'
c.NotebookApp.open_browser = False

주의: c.NotebookApp.password 설정할 때 u하고 띄어쓰기 없이 그대로 복붙해줘야한다!

설정이 완료됐으면 Esc 키를 누르고 :wq를 눌러 빠져나온다.

 

6. jupyter 실행하기

$ jupyter notebook

만약에 백그라운드로 실행을 원할 경우에 앞에 nohup을 붙이고 뒤에 &를 붙이면 된다!

(백그라운드: 프로세스가 실행되는 동안 다른 프로세스가 실행 가능/  하나의 쉘에서 여러 개의 프로세스를 동시에 실행할 수 있는 방식)

$ nohup jupyter notebook &

 

참고:

https://growingarchive.tistory.com/178

 

 

 

 

 

 

딥러닝을 수행하면서 아래와 같은 에러를 접하게 되었다.

RuntimeError: CUDA error: no kernel image is available for execution on the device CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1

 

CUDA가 제대로 설치가 안되서 발생한 에러라서 설치하고 재부팅하니까 작동이 잘됐다!

 

해결방법

1. CUDA 설치하기

- driver version에 맞는 version을 설치해야 하고, CUDA version에 맞는 version의 PyTorch를 설치해야 한다.

   1) 본인의 GPU(그래픽카드) 확인하기

       - 나는 GTX 1060 3GB이다!

     2) 확인한 GPU에 맞는 Compute capacity(version) 확인하기 

 https://en.wikipedia.org/wiki/CUDA    

3) CUDA 설치할 버전 확인하기 - 나는 compute capacity가 6.1이니까 10.0-10.1 버전을 설치하면 된다.

4) 설치하기

 - CUDA 10.0-10.1일 경우 아래 명령어로 설치(순서대로 진행하기)

$ pip3 uninstall torch
$ export TORCH_CUDA_ARCH_LIST="6.1"  # --> Compute Capability를 TORCH_CUDA_ARCH_LIST 환경 변수의 값으로 설정한다.
$ pip3 install torch==1.7.1+cu101 torchvision==0.8.2+cu101 -f https://download.pytorch.org/whl/torch_stable.html

 

 

2. 재부팅하기

 

 

 

https://mickael-k.tistory.com/17

리눅스 종류 몇개만 한눈에 보기

 

데비안 (Debian)

데비안 계열은 좀 더 오픈소스쪽에 가깝고 레드햇은 상용쪽에 가깝습니다. 아무래도 데비안 계열에서 파생된 배포판 중 가장 유명한 건 우분투(Ubuntu)이겠죠?. 데비안도 오래되었기 때문에 Granpa Linux 리눅스 할아버지라고 부르기도 한다 하더라고요 ㅎㅎ

데비안이 이렇게 오래되었음에도 불구하고 초보자들에게는 적합하지 않아요. 일반 사용자들이 설치하여 사용하기에는 어렵고 기술지원이나 사후관리가 어렵기 때문인 점도 있습니다.

 

데비안 버전 중 안정성에 기반을 둔 배포는, 안정성이 진짜 강하다는 강점이 있지만, 그렇기에 그에 따른 단점도 있죠 ㅎㅎ 데비안 소프트웨어는 당연히 구시대적일 수밖에 없습니다. 안정성이 높다는건 그만큼 검증된 시간을 가졌다는 거고, 빠르게 흘러가는 IT 산업에서는 그 시간동안 수많은 새로운 기능들이 출시되었다는 것을 의미하니까요. 

 

데비안 장점: 배포되고 있는 서버 리눅스 들 중 안정성이 매우 높다. 다양한 패키지 활용

목적: 데스크탑 보다는 서버에 적합

데비안 계열에 속하는 배포판:

Konoppix, Corel, Lindows, Ubuntu, Linux Mint, Elementary OS, BackTrack, Kali LInux 

 

1. 우분투 (Ubuntu) : 데비안 계열

현존하는 리눅스 배포판 중 가장 널리 쓰이고 널리 알려진 배포판. 우분투는 데비안 리눅스를 기반으로 제작된 리눅스입니다. 초보자들에게 가장 강력하게 추천되고 있는 배포판이죠.

 

레드햇 (Red Hat)

레드햇은 기업용 서버 OS로 가장 인기가 있죠! 그래서 실제 현업에서 가장 널리 사용되는 OS이기도 합니다.

예전에는 레드햇 리눅스는 유로버전과 무료버전을 모두 배포하였으나 현재 레드햇 리눅스의 의미는 상용으로 판매되는 레드햇 엔터프라이즈 리눅스(RHEL)만을 의미합니다.

기업 버전인 RHEL에 들어갈 기능을 테스트 하기 위한 용도로 배포되는 페도라가 레드햇 계열에 속하고, RHEL이 유료라 사후지원 기능을 제외하고 무료용으로 배포하는 centOS도 레드헷 계열에 속합니다.

 

레드햇 계열에 속하는 배포판:

RHEL, CentOS, Fedora, Oracle Linux, Scentific Linux, Asianux, Mandriva Linux, Mandrake 등

 

​1. 페도라 (Fedora)

"부분적으로 유료"

페도라 프로젝트를 후원함으로써 일반인들도 계속 레드햇 리눅스의 연장선에 있는 페도라 리눅스를 사용할 수 있게 했습니다. 무료인 페도라 리눅스는 상용인 RHEL에 포함될 새로운 기술을 미리 시험하는 용도로 사용됩니다. 즉 페도라 리눅스에서 안정화된 기능을 RHEL에 포함한것.

그래서 페도라는 잔버그도 많이 발생할 수 있고 오류가 있을 수도 있어요 (아무래도 신기능 테스트용으로 선보이는 거니까..) 이런 것들을 피드백받아서 개선하고 안정화시켜 RHEL에 추가하는 것

 



출처: https://crampstory.tistory.com/40 [크램프 이야기]

Microsoft Store에서 Ubuntu를 깔았는데 WSL오류가 발생하는 경우가 있다. 

wslregisterdistribution failed with error: 0x80041001

나는 이 에러를 접했고 다음과 같은 방법으로 해결했다.

powershell을 관리자 권한으로 열고 아래 명령어를 실행해보자!

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

 

 

+ Recent posts