IT(44)
-
Golang으로 Python의 collections.Counter 구현하기
String 분석 시 유용하게 사용가능한 nanoCounter; Python의 collections.Counter를 Golang으로 구현해보자. 1. Golang과 Python의 차이점 Golang은 단순한 언어다. Golang에는 while문도 없고 상속도 없다. Golang에는 개발자가 편리하게 사용가능한 built-in 함수가 거의 없다. 반면 진정한 의미에서 객체지향 언어라 할 수 있는 Python이나 Dart와 같은 언어에서는, ‘이런 기능 있을 것 같은데’ 생각을 하는 순간 보통 있음을 바로 확인할 수 있다. 2. Python의 collections.Counter 문자열 분석 시, 우리는 종종 각 character가 몇 번씩 출현하는지, 가장 많이 등장하는 character가 무엇인지 알아야하..
2023.02.13 -
백준 1157. 단어 공부 - Golang, Python
백준 1157 문제 보기 1. 문제 이해하기 알파벳 대소문자로 된 단어가 주어진다. 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력하라. 단, 가장 많이 사용된 알파벳이 여러 개일 경우, ?를 출력하라. (단어의 길이는 1,000,000 이하) 2. 아이디어 구상 간단한 문제다. 주어진 단어를 탐색하며 각 알파벳이 몇 개인지 세고 가장 많이 등장한 알파벳을 리턴하면 된다. Python으로 풀 경우 collections 모듈의 Counter를 이용하면 주어진 String에서 가장 많이 출현한 character를 쉽게 얻을 수 있다. input으로 단어를 받아 모든 알파벳을 대문자로 변환한 후, most_common()을 통해 최빈출 알파벳을 구한다. 만약 알파벳이 여러 개면 ?를 리턴해준다. from..
2023.02.06 -
백준 1152. 단어의 개수 - Golang, Python
백준 1152 문제 보기 1. 문제 이해하기 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 문자열에 존재하는 단어의 개수를 출력하라. (문자열의 길이는 1,000,000 이하) 2. 아이디어 구상 아주 간단한 문제다. 주어지는 한 줄의 문자열을 받아 공백을 기준으로 split을 한 후에 개수를 count하면 된다. Python으로 풀 경우 코드 한 줄이면 끝난다. print(len(list(input().rstrip().split()))) 그러나 Golang으로 풀 경우, 조금은 더 생각을 할 필요가 있다. Golang에서 값을 읽어오는 방법은 여러가지가 존재한다. 그 중에 대표적으로 가장 많이 사용되는 2가지는 1. bufio.NewReader의 ReadString 2. bufio.NewScan..
2023.01.30 -
Leetcode 5. Longest Palindromic Substring - Python (cf. 백준 13275)
Leetcode 5 문제 보기 문제 이해하기 주어진 문자 s의 substring 중에서 가장 긴 팰린드롬인 substring을 찾아라. 즉, 뒤집어도 같아지는 (eg. 토마토) 부분문자열을 출력하라. (1 max_length: res = s[left:right + 1] max_length = temp_length left -= 1 right += 1 짝수 개일 경우 두 개의 연속된 문자들을 기준으로 퍼져나가자. left, right = i, i + 1 while left >= 0 and right max_length: res = s[left:right + 1]..
2022.12.15 -
자주 쓰는 Git Command를 정리해보자
협업에 있어 깃 사용은 필수다. 혼자서 프로젝트를 진행할 때는 굳이 왜 사용하는지 모를 것이다. 그저 포트폴리오로써 git commit을 남기기 위해 사용할 뿐.. 하지만 프로젝트의 규모가 커지면서 자연스레 깃과 깃허브의 중요성을 깨닫게 된다. (그러니 일단 협업을 해보자! 그래야 배운다.) 그렇다면 자주 사용하는 깃 명령어들을 간단히 정리하는 시간을 가져보자. 1. Branch strategy 우선 브랜치 전략이란 무엇인지 알아보자. 브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행가능하다. 예를 들어 프로젝트를 진행하는 과정에서 어떤 기능을 추가하고 싶으면 '브랜치를 딴다'. 몸통에서 갈라진..
2022.08.25 -
Javascript의 클로저란?
클로저(Closure)는 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 대표적인 특성 중 하나다. MDN에 의하면 클로저의 정의는 다음과 같다. A closure is the combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment) 보통 어떤 개념의 정의는 개념에 대한 핵심을 압축해놓은 작은 책이다. 따라서 우리는 정의에 사용된 단어들을 일종의 목차내지 이정표 삼아서 탐색을 진행함으로써 그 책을 음미할 수 있다. 그러면 한 번 시작해보자. 1. Lexical environment 렉시컬 환경이란 코드를 실행하기 앞서 생성되는 특별..
2022.08.11