알고리즘 49

<독서> 호모 데우스 - 유발 하라리

📖 우리는 알고리즘에 따라 행동하는가 개인이 선호하는 행동을 유도하는 맞춤형 광고는 갈수록 정교해지는 것 같습니다. 자유의지를 가지고 판단한다고 생각하지만 결국 나라는 사람이 선택하게 될 답안지는 이미 정해져 있을지도 모릅니다. 그럼에도 삶이 뻔하지 않은 것은 사회가 한 개인의 선택이 아닌 개개인이 모인 집단의 선택으로 이루어지기 때문입니다. 한편 개인적인 선택이 개인적인 결과만을 초래하더라도 결과에 따른 감정을 만끽하는데 충실하다면 그것으로 충분할 것입니다. http://www.yes24.com/Product/Goods/39404092 호모 데우스 - YES24 “호모 데우스, 이것이 진화의 다음 단계다!”정치, 종교, 문화 모든 구시대적 신화와 인공지능, 유전공학의 새로운 신이 만나 펼쳐낼 최후의 서..

클래스/모험가 2022.08.06

<WIL> 알고리즘, 어려운 것, 낯선 것

🌊 # 3주차 심화반을 선택한 관계로 알고리즘이 4주 동안 진행됩니다. 알고리즘에 집중하고 싶었다. 라기보다는 심화반을 선택하는 동료들에게 자극을 받고 싶었습니다. 하지만 하루 종일 알고리즘 풀이를 하는 것이 쉽지만은 않습니다. 당장 프로그래밍 실력이 향상되는 것 같지도 않고, 게다가 알고리즘 풀이 조차도 늘고 있는 것인지 애초에 풀수 있던 문제일 뿐인지 헷갈리기도 합니다. 그럼에도 얻는 것이 있다면 복잡한 구조의 코드를 해석하고 흐름을 이해한다는 것입니다. 반복문과 조건문이 중첩되기 시작하면 코드의 흐름을 따라가기가 어려웠습니다. 자료구조를 비롯한 알고리즘 학습을 집중적으로 하면서 흐름을 따라가는 것이 한층 수월해짐을 느낍니다. 어려운 것이 아니라 낯선 것이었습니다. 늘 그렇듯이. 코드를 작성할 때도 ..

<자료구조> 스택

🎯 스택 1. 데이터를 추가하면 맨 마지막 위치에 자리합니다. 2. 삭제를 하면 맨 마지막 위치의 데이터를 삭제합니다(삭제 데이터 반환). 구현 (파이썬) class Node: def __init__(self, item, next): self.item = item self.next = next class Stack: def __init__(self): self.top = None def push(self, item): self.top = Node(item, self.top) def pop(self): if self.top is None: return None node = self.top self.top = self.top.next return node.item def is_empty(self): retu..

유물/알고리즘 2022.03.15

<백준> 5622번: 다이얼

🤖 문제 https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 풀이 const fs = require("fs"); const WORD = fs.readFileSync("/dev/stdin").toString().trim(); function charToNum(char) { switch (char) { case "A": case "B": case "C": return 2; case "D": case "E": case "F": return 3; case "G": case "H": case "I": return 4; case "J": ca..

유물/└ 백준 2022.02.05

<백준> 2908번: 상수

🤖 문제 https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 풀이 const fs = require("fs"); const questionNum = fs.readFileSync("/dev/stdin").toString().trim(); const qNumArr = questionNum.split(" "); function reverseNum(number) { const hundredsNum = Math.floor(number / 100); const tensN..

유물/└ 백준 2022.02.04

<백준> 1152번: 단어의 개수

🤖 문제 https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 풀이 const fs = require("fs"); const string = fs.readFileSync("/dev/stdin").toString().trim(); const vocaArray = string.split(" "); const result = vocaArray[0] === "" ? 0 : vocaArray.length; console.log(result); 1. (l..

유물/└ 백준 2022.02.03

<백준> 1157번: 단어 공부 (런타임 에러 (SyntaxError))

👾 문제 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 풀이(오답) import fs from "fs"; const charList = fs.readFileSync("/dev/stdin").toString().trim(); const upperCharList = charList.toUpperCase().split(""); let countList = []; for (let i = 65; i { char === alphabet ? (count += 1) : null; }); c..

유물/└ 백준 2022.01.22

<백준> 2675번: 문자열 반복 (런타임 에러 (SyntaxError))

👾 문제 https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 풀이(오답) import fs from "fs"; const inputArr = fs.readFileSync("/dev/stdin").toString().trim().split("\n"); const N = +inputArr[0]; let result = ""; for (let i = 1; i { for (let j = 0; j < problemN; j++) { result +=..

유물/└ 백준 2022.01.21

<백준> 10809번: 알파벳 찾기

🤖 문제 https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 풀이 const fs = require("fs"); const S = fs.readFileSync("/dev/stdin").toString().trim(); let result = ""; for (let i = 97; i

유물/└ 백준 2022.01.20

<백준> 11720번: 숫자의 합

🤖 문제 https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 풀이 const fs = require("fs"); const inputArr = fs.readFileSync("/dev/stdin").toString().trim().split("\n"); const problemNum = inputArr[1]; const problemNumArr = problemNum.split(""); let sum = problemNumArr.reduce((acc, cur) => acc + +cur, 0); console.log(sum); 1. ..

유물/└ 백준 2022.01.18