전체 글 121

당신은 전략가입니까 / 신시아 A. 몽고베리

책의 첫 느낌 먼저 책 제목에서 느껴지는 무거움이 있었다. 당신은 전략가입니까 라는 말이 뭔가 나와는 거리가 멀게 느껴지고 거창하게 느껴졌다. 출판된지 꽤 오래된 책이지만, 존경하는 사람의 추천으로 책을 읽게 됐다. 목차 및 주요 내용 1장 : 지금 우리에게 필요한 리더십은 무엇인가? 2장: 전략적 사고능력 테스트 3장: 실패했다면 그 이유는 무엇인가? 4장: 당신은 어떤 목적을 갖고 있는가? 5장: 목적을 어떻게 현실로 바꿀 것인가? 6장: 당신의 전략은 무엇인가? 7장: 전략가의 역할은 어디까지인가? 8강: 전략가로 성공하기 위해 지금 무엇을 해야 하는가? 목차에서 알 수 있듯, 이 책의 가장 큰 특징은 의문형으로 질문을 던지는 것이다. 우리에게 익숙했던 기업이 지금 당장 사라진다면 어떤 일이 펼쳐지..

서재 2023.01.26

[python] 클린코드와 코드 리팩토링

✅ 클린 코드란? 클린 코드에 대해 유일하고 엄격한 정의는 존재하지 않는다. 하나의 통용되는 말이 있다면 바로 가독성이 높은 코드가 될 것이다. 즉, 클린 코드는 다른 개발자가 코드를 읽고 유지 관리를 할 수 있는지 여부에 달려 있다고 볼 수 있다. 클린코드로 코드를 작성하려면 다음과 같이 구현해야 한다. 네이밍이 잘 되어야 함(무슨 역할인지 명시) 변수, 함수, 클래스, 파일 이름 모두 해당 이름은 항상 "무엇을 하는지" 명확하게 드러내야 한다. 이름은 역할과 본질을 나타내 준다. 코딩할 때 가장 어려운 파트 오류가 없어야 함 중복이 없어야 함 중복 코드가 있다면 수정할 때 2번 이상 수정해야 함. 3번 이상 중복 코드가 등장하면, 어떻게든 한 곳으로 모아줘야 한다. 의존성을 최대한 줄여야 함 클래스 ..

Computer Science 2023.01.25

[python]백준 11659번: 구간 합 구하기 4(구간합)

# 11659 구간 합 구하기 4 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline N, M = map(int, input().split()) num_list = list(map(int, input().split())) sum_list = [0] result = 0 for i in range(len(num_l..

Algorithm 2023.01.22

[python]백준 11724번: 연결 요소의 개수(그래프)

# 11724 연결 요소의 개수 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**7) N, M = map(int, input().split()) graph = [[] for i in range(N+1)] visited = [0] * (N+1) for _ in r..

Algorithm 2023.01.22

NoSQL이랑 RDBMS의 특징과 차이점

✅ DB(DataBase) 우리가 사용하는 정보는 DB에 저장하지 않고 연결이 끊어지면 휘발성으로 인해 사라진다. 그러므로 DB에 저장하여 다른 사람들과 정보를 공유하기 위해 만들어진 공간이다. 구조화된 정보 또는 데이터의 체계적인 집합을 말한다. ✅DBMS(DataBase Management System) 데이터베이스 관리 시스템으로 사용자와 데이터 사이에서 사용자의 요청에 의해 데이터의 생성 조회 등 데이터베이스를 관리해주는 역할을 한다. ✅ SQL(Structured Query Language) 관계형 데이터베이스 관리 시스템(RDBMS)의 관리를 위해 제작된 언어로써, 자료의 검색과 재조합, 스키마 생성과 수정과 같은 데이터베이스 객체 조정 관리를 위해 사용되고 있다. ✅RDBMS RDBMS에는 ..

Computer Science 2023.01.21

[앱의 종류] 네이티브 앱 & 웹 앱 & 하이브리드 앱

우리가 사용하는 어플리케이션은 사용자에게는 화면 구성이나 구동방식이 비슷하게 느껴지겠지만 다양한 방식으로 개발되고 있다. 오늘은 개발 방식에 따라 나뉘는 세 가지 앱의 종류인 네이티브 앱, 웹 앱, 하이브리드 앱의 개념과 장단점을 알아보자. ✅ 네이티브 앱(Native APP): 모바일 기기에 최적화 네이티브 앱(Native APP)이란 모바일 기기에 최적화된 네이티브 언어로 개발된 앱을 뜻한다. 국가별로 언어가 다르듯, 모바일 운영체제도 개발을 위해 각기 다른 언어를 사용해야 한다. 안드로이드 운영체제의 대표적인 네이티브 언어는 코틀린(Kotlin) 또는 자바(Java)이며 IOS는 스위프트(Swift) 또는 오브젝티브 C(Objective-C)이다. 해당 언어를 기반으로 각 모바일의 운영체제에 딱 맞..

Computer Science 2023.01.19

[python] 프로그래머스 안전지대(방향탐색)

# 120866 안전지대 https://school.programmers.co.kr/learn/courses/30/lessons/120866 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ⭐ 코드 def solution(board): N = len(board) dx = [-1, 1, 0, 0, -1, -1, 1, 1] dy = [0, 0, -1, 1, -1, 1, -1, 1] # 지뢰 설치 boom = [] for i in range(len(board)): for j in range(len(board)): if board[i][j] == 1: boom.a..

Algorithm 2023.01.19

[python]백준 1654번: 랜선 자르기(이진탐색)

# 1654 랜선 자르기 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 코드 K, N = map(int, input().split()) already = [int(input()) for _ in range(K)] start, end = 1, max(already) while start = N: start = mid + 1 else: end = mid - 1 print(end) 📝 풀이 주어진 랜선을 잘라서 필요한 ..

Algorithm 2023.01.18

프로세스(Process)와 스레드(Thread)

✅ 프로세스란? 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이다. 코드의 집합으로 이루어진 프로그램이 실행되는 것이 프로세스이다. 즉 프로그램이 메모리에 올라와 운영체제로부터 CPU를 할당받고 프로그램이 실행되고 있는 상태. 일을 처리하는 일련의 과정을 뜻한다. 예를 들어 컴퓨터를 켰을 때 카카오톡과 크롬, 유튜브를 실행시키는 것은 각각의 프로세스를 실행시키는 것이다. ✅ 프로세스의 구조 위의 그림처럼 프로세스는 Code, Stack, Heap, Data 영역의 네가지 구조로 되어있다. 각각의 구조의 특징은 다음과 같다. 코드 영역(Code area): 프로그래머가 작성한 프로그램이 코드 영역에 작성된다. 데이터 영역(Data area): 코드가 실행되면서 사용한 변수나 파일들의 각종 데이터들이..

Computer Science 2023.01.18

[DATABASE] ORM이란?

✅ ORM이란 ORM은 Object Relational Mapping 즉, 객체-관계 매핑의 줄임말이다. 우리가 OOP(object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블을 자동으로 매핑하는 것을 의미한다. 그러나 클래스와 테이블은 기존부터 호환가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하는데, 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결한다고 한다. 따라서 ORM을 이용하면 따로 SQL문을 짤 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 된다. 🔎 ORM 요약 ORM은 Object Relational Mapping(..

Computer Science 2023.01.18
728x90