친절하게 힌트까지 있는 문제이다.

일단 문제는 굉장히 간단한데 문제는 백준의 시간 초과이다.

이전에 올린 문제 (https://gettingtoknowit.tistory.com/99)와 같이 sys를 사용해야 시간 초과가 걸리지 않는다.

 

[백준] 10828_스택 파이썬

우선 간단히 스택 구조에 대해서 정리해보자면, 스택(stack)은 LIFO(Last In First Out) 구조이다. 즉, 가장 최근에 스택에 추가한 항목이 가장 먼저 나오는 항목이 된다. 아마 C/C++로 했으면 코드가 길어

gettingtoknowit.tistory.com


코드는 다음과 같이 하면 되지만, 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys
= int(sys.stdin.readline())
num_list = []
for _ in range(k):
    num = int(sys.stdin.readline())
    if num != 0:
        num_list.append(num)
    else:
        num_list.pop()
 
total = 0
for i in num_list:
    total += i
print(total)
cs

 

위의 코드를 sum으로 더 간단하게 만드는 것 또한 가능하다.

1
2
3
4
5
6
7
8
9
import sys
= int(sys.stdin.readline())
num_list = []
for _ in range(k):
    num = int(sys.stdin.readline())
    if num != 0:
        num_list.append(num)
    else:
        num_list.pop()
print(sum(num_list))
cs

 

 

문제 출처: https://www.acmicpc.net/problem/10773

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net


우선 간단히 스택 구조에 대해서 정리해보자면, 스택(stack)은 LIFO(Last In First Out) 구조이다. 즉, 가장 최근에 스택에 추가한 항목이 가장 먼저 나오는 항목이 된다.

이미지 출처: https://www.programiz.com/dsa/stack

 

아마 C/C++로 했으면 코드가 길어지고 조금은 어려웠을지도 모르겠다고 느껴지겠지만,

확실히 파이썬으로 하니 간단하게 처리할 수 있었다.

파이썬에서는 C++처럼 스택에 대한 STL은 없지만, list의 append, pop 메서드를 활용하여 간단하게 처리할 수 있다.

 

자세한 부분은 https://docs.python.org/ko/3/tutorial/datastructures.html를 참고하면 된다.

 

5. 자료 구조 — Python 3.9.6 문서

5. 자료 구조 이 장에서는 여러분이 이미 배운 것들을 좀 더 자세히 설명하고, 몇 가지 새로운 것들을 덧붙입니다. 5.1. 리스트 더 보기 리스트 자료 형은 몇 가지 메서드들을 더 갖고 있습니다. 이

docs.python.org


대신 백준에서 파이썬 코드를 제출할 때, input()을 활용하면 시간 초과가 뜬다. 

다라서, sys.stdin.readline()을 사용해야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import sys
num = int(sys.stdin.readline())
stack = []
= 0
for i in range(num):
    stack_word = sys.stdin.readline()
    if stack_word[:4== "push":
        stack.append(int(stack_word[5:]))
    if stack_word[:3== "pop":
        if len(stack) != 0:
            print(stack.pop())
        else:
            print(len(stack) - 1)
    elif stack_word[:4== "size":
        print(len(stack))
    elif stack_word[:5== "empty":
        if len(stack) == 0:
            print(1)
        else:
            print(0)
    elif stack_word[:3== "top":
        if len(stack) == 0:
            print(-1)
        else:
            print(stack[-1])
    else:
        pass
    i += 1
 
cs

 

 

문제 출처: https://www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net


생각보다 시간을 썼던 문제이지만, 논리만 잘 세우면 금방 해결할 수 있는 문제이다.

첫 번째 for문에서 member_list.append만 제대로 해주면 된다. 

 

그리고 lambda를 잘 사용해서 정렬 처리를 하는 게 또 다른 핵심이라고 보면 될 듯하다.

1
2
3
4
5
6
7
8
9
10
11
12
num = int(input())
member_list = []
for _ in range(num):
    age, name = map(str, input().split())
    age = int(age)
    member_list.append((age, name))
# print(member_list)
# 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서
member_list.sort(key = lambda x: x[0])
# print(member_list)
for i in member_list:
    print(i[0], i[1])
cs

 

 

문제 출처: https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

기사 출처: http://www.itnews.or.kr/?p=34535

 

IT 리더 40% 이상 "10년 후 AI에 일자리 빼앗겨" - IT News

IT 리더 40% 이상이 2030년까지 인공지능(AI)에 일자리를 빼앗긴다고 예상하고 있는 것으로 나타났다 컴퓨터 백신 프로그램 ‘바이러스 버스터’ 시리즈로 알려진 보안기업 트렌드 마이크로(Trend Mi

www.itnews.or.kr

 

현재 해외에서 뿐만 아니라 한국에서도 계속 추진 중인 정책은 IT분야의 전문가들을 양성하는 것이다.

특히, 국내의 경우 중학교에 "정보" 과목을 의무화시켰으며, AI교육에 대한 박차를 가하겠다는 정부의 의지를 담아서 AI과목들을 만들고 있다는 점이다.

또한, 국민내일배움카드로 배울 수 있는 프로그래밍 관련 분야들이 매우 다양해졌으며, 지원도 많아졌다.

(캠프도 많이 생기고 있는데, 링크를 참고하면 대표적인 코딩 캠프들이 몇 가지 있다) https://gettingtoknowit.tistory.com/92

 

4차 산업혁명의 AI(인공지능) 양성 + 5가지 AI 코딩 캠프

기사 출처: https://www.asiae.co.kr/article/2021040116360443896 [AI패권전쟁]애플 5년 간 AI기업 25곳 인수할 동안…韓 군침만 25대 3. 애플과 삼성전자가 최근 5년간 인수한 인공지능(AI) 관련 기업의 숫자다...

gettingtoknowit.tistory.com

 


그런데 이런 뉴스가 있다고 한다.

IT News에 따르면 "컴퓨터 백신 프로그램 ‘바이러스 버스터’ 시리즈로 알려진 보안기업 트렌드 마이크로(Trend Micro) 조사에 따르면, IT분야 리더와 최고 정보책임자(CIO), 최고 기술 책임자 (CTO) 등 관련 전문가 500명에게 사이버 보안 분야 미래를 물은 결과 41%가 “향후 10년 이내에 AI에 일을 빼앗길 것으로 믿고 있다”라고 답변했다." 라고 한다.

 

상당히 충격적인 이야기가 아닐 수 없다. 현재 많은 사람들이 IT분야로 가려고 하고 있으며, 특히 AI 분야에 대한 지원이 많은 만큼 AI에 대한 관심도 많아지고 있는데, 이에 따라서 AI에 의해 일자리를 빼앗긴다는 이야기이다.

 

심지어 10년 이내에 AI가 모든 사이버 보안을 완전 자동화시킨다고 32%의 답변이 있다고 한다.

이에 따라 우리는 생각을 할 필요가 있다고 생각한다.

우리가 배우는 IT 기술들은 과연 기술에서만 멈춰야 하는가.

이제 사람이 할 수 있는 IT분야는 기술은 기본이 되어야 한다.

기술 그 이상을 바라보며 미래를 대비하는 것도 필요하다는 생각이 든다.

파이썬을 입문하는 사람이라면 꼭 이 사이트를 알아야 한다고 생각한다.

생가보다 많은 사람들이 모르는 사이트이기 때문에 이렇게 소개를 하고자 한다.

 

파이썬 튜터(Python Tutor)라는 사이트이다.

 

이 사이트에서는 코드를 입력하면, 해당 코드를 한 줄 한 줄 과정을 수동으로 조작하면서 시각화된 코드를 볼 수 있다.

파이썬 입문자에게 첫 번째 벽인 반복문의 경우, 이 사이트를 통해서 공부를 하면 매우 효과적이라고 생각된다.

 

http://www.pythontutor.com/

 

Python Tutor - Visualize Python, Java, C, C++, JavaScript, TypeScript, and Ruby code execution

VISUALIZE CODE EXECUTION Learn Python, Java, C, C++, JavaScript, and Ruby Python Tutor helps people overcome a fundamental barrier to learning programming: understanding what happens as the computer runs each line of code. You can use it to write Python, J

www.pythontutor.com


[파이썬 튜터 사용 방법]

1. 사이트에 들어가게 되면 다음과 같은 창이 뜬다.

빨간색으로 표시한 부분 (Start visualizing your code now)를 클릭하라

 

2. Start visualizing your code now를 클릭하면 다음과 같은 창이 뜰 것이다. 

   여기에 원하는 코드를 입력하면 된다.

코드를 입력하고 나면 1과 2중에 선택해서 클릭하면 된다.

3. 코드를 입력하고 난 후 위의 사진에서 보이는 것과 같이 1과 2 중에서 선택해서 클릭하면 된다.

   그런데 몇 주간 사용해본 결과 1번보다는 2번을 더 많이 사용하게 된다는 느낌이 들었다.

 

4. Live Programming Mode를 누르면 다음과 같은 창이 뜬다.

   별표로 표시된 막대를 끌어서 원하는 과정으로 옮길 수가 있다.

   또는 그 밑에 있는 버튼 4개(First, Prev, Next, Last)로 옮길 수도 있다.


[파이썬 튜터 사용 영상 - Live Programming Mode]


[파이썬 튜터 사용 영상 - visual  execution]

혹시 visual execution을 누르면 어떤 형태로 볼 수 있는지 궁금한 사람들을 위해서 유튜브 영상 링크를 걸었으니 확인하면 된다.

https://www.youtube.com/watch?v=4Cgxx8whqso 

 

 


 

 

참고로  Java Tutor C Tutor C++ Tutor JavaScript Tutor Ruby Tutor 도 존재하기 때문에 이에 대해서 공부하는 사람들은 이런 사이트들을 활용해도 매우 유용할 것으로 보인다.

베스킨라빈스 31 게임의 자세한 내용은 다음 링크를 참고하자

https://namu.wiki/w/%EB%B0%B0%EC%8A%A4%ED%82%A8%EB%9D%BC%EB%B9%88%EC%8A%A4(%EA%B2%8C%EC%9E%84) 

 


간단히 정리해보면, 

1. 나와 컴퓨터 모두 한 턴에 1회 ~ 3회까지만 숫자를 외칠 수 있음

2. 31을 외치는 사람이 지는 것이다.

 

이런 규칙으로 컴퓨터와 대결하는 간단히 프로그램을 파이썬으로 작성해보면 다음같이 작성할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
def baskin31():
    import random
    current_number = 0  # 현재 숫자
    while True:
        # list(map(int, input().split()))을 통해서 input값을 빈칸을 구분자로 하여 int형으로 받아서 list로 저장하라는 뜻이다.
        player = list(map(int, input("Player는 숫자를 입력하세요: ").split()))
        # player는 숫자 3개까지만 입력이 가능하다
        if len(player) > 3:
            print("숫자는 3개까지만 입력이 가능합니다.")
            continue
        # 숫자는 이전 값(=현재 숫자) 보다 1만큼 큰 숫자로 시작해야 한다.
        if player[0!= current_number + 1:
            print("이전의 숫자보다 1만큼 큰 숫자로 시작해야 합니다.")
            continue
        # 숫자는 연속적으로 입력되어야 한다.
        if len(player) == 3:
            if player[2- player[1!= 1 or player[1- player[0!= 1:
                print("연속된 숫자가 입력되어야 합니다.")
                continue
            else:
                current_number = player[2]
        elif len(player) == 2:
            if player[1- player[0!= 1:
                print("연속된 숫자가 입력되어야 합니다.")
                continue
            else:
                current_number = player[1]
        elif len(player) == 1:
            current_number = player[0]
 
        # 현재 숫자는 player 리스트의 가장 끝 index에 해당하는 정수값이다.
        current_number = player[-1]
        print(f"현재 숫자 : {current_number}")
 
        # player가 31 이상의 숫자를 선택할 시에 패배한다.
        if current_number >= 31:
            print("\nPlayer가 패배했습니다.")
            break
 
        # 현재 숫자에서 31이 되기까지 남은 차례를 remaining_turn이다. line 52에서 사용된다.
        remaining_turn = 31 - current_number
        computer = list()
        computer_turn = random.randint(13)
        for i in range(computer_turn):
            current_number += 1
            computer.append(current_number)
            # 컴퓨터 입장에서 승리를 하기 위해서 31 이전의 숫자까지 선택한다.
            # 하지만 31밖에 선택지가 없으면 31을 선택 후 끝낸다.
            if current_number >= 31:
                print(f"컴퓨터 : 31")
                break
            if computer_turn <= remaining_turn:
                print(f"컴퓨터 : {current_number}")
                continue
        print(f"현재 숫자 : {current_number}\n")
 
        # 컴퓨터가 31을 선택할 시에 player의 승리
        if computer[-1== 31:
            print("Player가 승리했습니다.")
            break
 
 
# 숫자 게임을 시작하자
print('=' * 30)
print("\t베스킨라빈스31 게임 시작!")
print('=' * 30)
baskin31()
 
cs

 

https://www.youtube.com/watch?v=_GMcf1fXdW8 

 

유튜브를 보던 중 유튜브의 알고리즘을 통해서 놀라운 영상을 보고 기록을 해보지 않을 수가 없었다.

 

위의 영상에서 보여주는 것은 뇌졸중과 같은 병으로 인해서 말을 할 수 없는 사람의 뇌파 활동만으로 문장을 출력하는 기술을 개발했다고 발표되었다. 

간단히 위 영상에서 소개하는 과정을 정리하자면,

1) 뇌의 신호를 컴퓨터로 전송

2) 뇌 신호 처리, 발화 감지, 단어 분류, 언어 모델링의 과정을 컴퓨터 처리를 통해 이루어진다

3) 뇌파를 문장으로 바꾼다.

 

그리고 실제로 이 프로젝트의 실행결과는 다음과 같은 사진처럼 이루어졌다.

출처: https://www.youtube.com/watch?v=_GMcf1fXdW8  

 


이 글을 보니 과거에 뇌파만으로 어떤 장면을 머릿속으로 떠올렸는지 높은 정확도로 컴퓨터가 재현해내는 영상을 봤던 기억이 난다. 그리고 몇 달 전 "과학콘서트"와 "열두 발자국"의 저자인 정재승 교수의 북콘서트에서 들었던 말도 문득 생각이 들었는데, 그때 교수님께서 "현재 AI라는 새로운 산업혁명이 끝난 후에는 어떤 형태의 혁명이 또 올 것 같은가"에 대해서 "물질세계(특히 인간)와 디지털 세계 간의 경계가 사라져서 새로운 형태의 무언가"가 올 수도 있다는 형태로 말씀을 해주셨다.

 

위의 기사는 점차 인간과 사람간의 경계가 없어지는 것을 보여주는 것 같다. 현재의 4차 산업 혁명은 물질세계와 디지털 세계의 완전한 경계가 사라진 것은 아니다. 다만 디지털 세계가 물질세계에 영향을 주기 시작한 점 정도라고 볼 수 있다. 하지만, 만약 이를 초월하여 서로에 대한 영역 경계가 없어진다며 어떻게 될까?

영화에서나 나올법한 사이보그가 생길 수 있지 않을까? 기계 심장, 기계 팔과 다리, 기계 눈 등을 가지는 사람이 나올 수 있지 않을까라는 생각이 든다.

사진 출처: Patrick Holland/CNET (https://www.cnet.com/tech/mobile/with-z-fold-3-z-flip-3-samsungs-doing-all-the-right-things-but-it-may-still-struggle/)

 

드디어 삼성에서 모바일 혁신의 방향을 제대로 잡은 모습을 보여주었다.

Z Fold 3과 Z Flip 3을 지원하는 색이 훨씬 다양해졌으며, 가격 또한 기존의 가격보다 약 20% 낮아진 것이 특징이다.

 

또한, 두 제품은 문서로만 봤을 때는 전의 폴더폰들과는 달리 아예 다른 제품이 되었다고 생각될 정도의 발전이 이루어졌다. 하드웨어 측면에서만 본다면 Ap, 화면 주사율, 액정의 내구성, 폴더 경첩의 내구성, 방수 기능 등에 있어서 훨씬 발전된 모습을 보여주었다.

특히 내구성에 있어서는, 폴드를 했을 때 화면이 파손되지 않도록 씌우는 보호 필름인 초박형 유리(Ultra Thin Glass = UTG)의 내구성이 매우 크게(약 80% 향상) 강화되었음을 알 수 있다. 그리고 ‘아머 알루미늄(Armor Aluminum)’와 ‘Corning® Gorilla® Glass Victus™ (코닝 고릴라 글라스 빅투스)’ 강화유리를 사용하여 스마트폰의 내구성을 증가시켰다.

 

자세하고 상세한 내용은 다음의 표와 같다.

 

사진 출처: https://it.donga.com/32358/ (삼성전자 갤럭시Z폴드2와 갤럭시Z폴드3 비교 표)

 

 

이번에 나온 삼성의 Z Fold 3과 Z Flip 3가 의미하는 방향은 명확하다. 삼성의 스마트폰에 일반 소비자들도 접근하기 편하도록 만드는 것이다. 이는 특히 가격 측면에서의 모습에서도 보이는 부분이다.

 

다만 소프트웨어적인 부분에서 과연 얼마나 발전을 했을지, 그리고 얼마나 체감상 그 발전이 느껴지는지는 추후에 사용을 해봐야 알 수 있는 부분으로 생각된다.


오랫동안 해드폰은 스티브 잡스의 아이폰에서부터 발전이 많이 멈췄다고 생각한다. 아이폰이라는 혁신적인 발전으로 핸드폰 하나로 전화, 문자, 인터넷, 카페라 기능을 모두 쓸 수 있었다.

그 후에는 스마트폰은 굵기, 크기, 카메라 성능, 소프트웨어적인 측면에서 긍정적인 발전은 확실히 있었지만, 스마트폰에 대한 혁신적인 아이디어가 들어간 느낌의 변화는 크게 없었다고 생각한다.

그러다가 2020년에 삼성의 Galaxy Fold가 일을 낸 것이다. 새로운 스마트폰 시장의 혁신적인 변화를 불러들이는 시작이라고 생각된다. 그리고 그 변화를 삼성이 이끌어냈다는 것에서 삼성의 오랜 고객으로서 멈추지 않고 꽃길만 걸었으면 하는 심정이다.

 


참고 출처 1: https://www.cnet.com/tech/mobile/with-z-fold-3-z-flip-3-samsungs-doing-all-the-right-things-but-it-may-still-struggle/

 

Samsung's doing everything right with Z Fold 3 and Z Flip 3. But it may still struggle

The company is dropping the price and stressing the durability of its newest foldables, but consumer appetite may still be lacking.

www.cnet.com

참고 출처 2: https://it.donga.com/32358/

 

삼성 갤럭시Z폴드3·갤럭시Z플립3, 특징과 가격 한눈에

[IT동아 차주경 기자] 삼성전자는 11일(현지시각) 폴더블 스마트폰 신제품 갤럭시Z폴드3와 갤럭시Z플립2를 동시 공개했다. 두 제품 모두 이전 제품보다 AP, 화면 주사율 등 기

it.donga.com

참고 출처 3: https://news.samsung.com/kr/%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90-%EA%B0%A4%EB%9F%AD%EC%8B%9C-z-%ED%8F%B4%EB%93%9C3%C2%B7%EA%B0%A4%EB%9F%AD%EC%8B%9C-z-%ED%94%8C%EB%A6%BD3-%EC%A0%84%EA%B2%A9

 

삼성전자, ‘갤럭시 Z 폴드3’·‘갤럭시 Z 플립3’ 전격 공개

삼성전자가 11일(한국시간) ‘삼성 갤럭시 언팩 2021(Samsung Galaxy Unpacked 2021: Get ready to unfold)’을 온라인을 통해 개최하고, 모바일 혁신의 다음 장(章)을 여는 ‘갤럭시 Z 폴드3(Galaxy Z

news.samsung.com

 

기사 출처: https://www.asiae.co.kr/article/2021040116360443896

 

[AI패권전쟁]애플 5년 간 AI기업 25곳 인수할 동안…韓 군침만

25대 3. 애플과 삼성전자가 최근 5년간 인수한 인공지능(AI) 관련 기업의 숫자다. 애플이 무려 25곳의 AI 기업을 인수하는 사이 국내 ICT 대표 기업 중에는 그나마 삼성전자만이 인수 레이스에 참전

www.asiae.co.kr

 

최근에 AI에 대해서 계속 관심을 넓히고 있는 중, 얼마나 AI 산업은 발전을 하고 얼마나 비전이 있는가에 대해서도 관심이 생기기 시작했다.

 

그러던 중, 조금은 오래된 기사이긴 하지만, 애플과 구글 같은 IT의 발전을 현재 이끌어가는 대기업들에서는 AI기업을 인수하고 있다는 소식을 들었다.

 

또한, 개인적으로 최근에 경험한 것 중에는 영어단어 빅데이터 플랫폼인 코퍼스(Corpus)가 원래는 무료로 모두가 로그인 없이 사용할 수 있었으나, 최근 몇 개월 사이에 상당히 많은 개인정보를 요구하는 형태의 로그인/회원가입을 원하고 있으며, 이는 구글에서 이루어진 것으로 추정되고 있다 (확실치 않은 정보이긴 하지만, 어쩌면 구글의 ngram과 연관이 있지 않을까라는 생각도 든다).

 

그만큼 AI는 4차 산업혁명을 주도해가는 데 있어서 중요한 역할을 하는 것은 확실한 것으로 느껴진다.

 

한국 또한 AI 발전에 뛰어들고 있다. 정부차원에서 지원을 하는 AI 대학원들도 있으며, 최근에 AI와 관련한 많은 코딩 캠프들이 생기고 있다. 그리고 많은 캠프들은 국민내일배움카드의 발급으로 정부의 지원까지 받으며 참여를 할 수 있기에 차세대 AI 전문가들의 양성에 있어 힘을 쓰고 있음을 알 수 있다.

 

-AI 교육기관 리스트
 1. 네이버 부스트캠프 AI Tech
https://boostcamp.connect.or.kr/guide_ai.html

 

부스트캠프

개발자의 지속 가능한 성장을 위한 학습 커뮤니티

boostcamp.connect.or.kr

 

2. 멋쟁이사자처럼 AI SCHOOL
https://k-digital.likelion.net/ai-school

 

인공지능 통합과정

멋쟁이사자처럼 AI SCHOOL에 대해 궁금하신 분! 지원을 망설이고 계신 분! 어떻게 참여하는지 모르겠는 분! 여기에서 FAQ를 확인해보세요 :)

k-digital.likelion.net

 

3. 코드스테이츠 AI 부트캠프
https://www.codestates.com/course/ai

 

데이터사이언티스트 부트캠프 | 코드스테이츠 | AI, 딥러닝, 머신러닝

데이터사이언스 부트캠프에서 배우고 데이터사이언티스트로 취업하세요! 최상의 AI, 딥러닝, 머신러닝 프로그램을 제공하는 부트캠프입니다. 실무 위주 커리큘럼과 취업까지 책임지는 커리어

www.codestates.com

 

4. 모두의연구소 AIFFEL
https://aiffel.io/

 

함께 탐험하며 성장하는 AI 혁신학교 - AIFFEL(아이펠)

AI혁신학교 AIFFEL(아이펠)은 역계단식의 현실형 인공지능 학습을 제안합니다. 50가지 살아있는 프로젝트를 단시간 폭넓게 경험하면서 세상에 제대로 통하는 여러분만의 무기를 만들어보세요!

aiffel.io

 

 5. 프로그래머스 인공 지능 데브 코스
https://programmers.co.kr/learn/courses/10821

 

K-Digital Training: 프로그래머스 인공지능 데브코스

× 2021년도 상반기 모집이 시작했습니다. 여기서 확인해주세요! K-Digital Training100% 정부지원 프로그래머스 인공 지능 스쿨 최신 인공 지능 모델을 ‘연구’하는 것이 아닌 실제적인 문제를 ‘해결

programmers.co.kr

 

6. Baro AI Academy

https://baroaiacademy.app/

 

인공지능 딥러닝 머신러닝 강의 | 바로 AI 아카데미 BARO AI ACADEMY

대한민국 최고의 AI 인공지능 온라인 강의. 데이터 사이언스 전문가가 되기 위한 필수 코스. 대학원 갈 필요 없이 차원이 다른 딥러닝, 머신러닝 교육 과정을 경험해보세요.

baroaiacademy.app

 


간단하게 에라토스테네스의 체를 사용하면 풀 수 있는 문제이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def isPrime(num):
    if num == 1:
        return False
    else:
        for i in range(2int(num**0.5+ 1):
            if num % i == 0:
                return False
        return True
 
 
= int(input())
num = list(map(int, input().split()))
cnt = 0
for i in range(n):
    if isPrime(num[i]) is True:
        cnt += 1
print(cnt)
 
cs

처음에 line 13에 있는 cnt =0 이라는 코드를 넣지 않고 돌렸었는데, 이렇게 되면 런타임 에러(NameError)가 뜬다.

이렇게 되는 이유는 아마 채점프로그램의 문제인 것 같기도 한데, 또 특이한 점은 atom의 hydrogen을 통해서 프로그램을 실행시켰을 때도 계속 cnt가 초기화가 되지 않고 쌓이는 현상이 나타난다는 것이다.

 

정확하지는 않지만, 초기화가 이루어지지 않을 경우, cnt가 할당된 메모리가 해제가 되지 않고 계속 쌓이기 때문인 듯 싶다.

 

아무튼, cnt = 0으로 제대로 변수를 초기화시켜주면 코드는 제대로 작동한다.


참고로 에라토스테네스의 체는 이전에 풀었던 문제은 다음 링크를 참조하자.

https://gettingtoknowit.tistory.com/89

 

[백준] 1929_소수 구하기 파이썬 (시간초과 VS 에라토스테네스의 체)

시간초과와의 싸움이었다. 간단히 구하는 것은 가능하지만 계속 오버타임이 발생했다. 처음에 썼던 코드 2개를 올려보면 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 def count_prime_number(n, m):    ..

gettingtoknowit.tistory.com

 


 

문제 출처: https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

 

+ Recent posts