[자바스크립트] 자바스크립트를 왜 배워야하는가.
·
Dev Lang/JavaScript
자바스크립트 왜 배우고 싶은가 프론트엔드 개발에 유용하게 사용이 가능한 언어이며 웹 개발자라면 꼭 익혀둬야하는 언어라고 생각한다. 기존에 리액트나 뷰로 프론트엔드 개발자에게 유용하게 쓰이는 언어이지만 Node.js 사용으로 백엔드까지 사용이 가능해진 언어이다. 대학교 2학년내에 웹 개발 관련 프로젝트 참여를 하고 싶어서 자바스크립트 공부를 시작했다. 개발자 대형 커뮤니티인 스택오버플로우에서는 개발자를 대상으로 매년 설문조사가 열린다. 설문조사 결과를 보면 많은 사람들이 자바스크립트를 선호하고 있는것을 알 수 있다. 웹 프레임워크 사용 비중 자바스크립트는 다양한 언어와의 협업이 가능하다 자세한 내용은 아래 링크에서 확인이 가능하다.https://insights.stackoverflow.com/survey/..
[백준] 10610번 30 - 파이썬
·
백준/그리디
https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 풀이 30의 배수는 주어진 수의 각자리수를 더해서 3으로 나누어지면서 끝자리가 무조건 0이어야하는 수여야한다는 정보만 안다면 쉽게 풀 수 있는 문제이다. iterable 자료형.sorted(N, reverse=True) 오름차순으로 정렬될 문자를 내림차순으로 바꾸어준다. 문제에서는 주어진 숫자를 이용해서 만들 수 있는 최대값이다. # 10610번 30 # 30의 배수는 각 자리수를 더해서 3의 배수..
[백준] 14502번 연구소 - 파이썬
·
백준/DFS&BFS
https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 풀이 N: 지도의 세로 크기, M: 지도의 가로 크기, 지도좌표 값(바이러스(2), 벽(1)) 실버문제들 중에서도 흔히 볼 수 있는 바이러스나, 토마토 문제처럼 특정한 값을 가진 칸에 인접한 칸들에게 영향을 주는 문제이다. 나는 이런 문제가 나올 때마다 BFS를 써준다. 다만 이 문제가 껄끄러운 이유는 벽을 어떻게 세워야 최대안전영역이 나오는가이다. 따라서 우리는 벽을 세울 수 있는 모든 경우의 수를 구해서 ..
[백준] 2875번 대회 or 인턴 - 파이썬
·
백준/그리디
https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 풀이 N: 여자 학생 수 M: 남자 학생 수 K: 인턴쉽에 참가해야하는 인원 팀을 만들려면 여자 2명, 남자 1명이 필요하다 대신 팀을 만들고나서 남은 인원들이 K명 이상이어야한다. # 2875번 대회 or 인턴 # N: 여자 학생 수 M: 남자 학생 수 K: 인턴쉽을 가야하는 학생 수 N, M, K = map(int, input().split()) cnt = 0 # 팀의 개수 while N >= 2 and M >= 1: # 한팀을 만들려면 여자는 2명이상 남자는 ..
[백준] 2110번 공유기 설치 - 파이썬
·
백준/다이내믹 프로그래밍
https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 풀이 알고리즘은 이진탐색으로 문제를 풀어야 시간초과가 걸리지않는 문제이다. 목표는 공유기를 설치한 집들 중 가장 가까운 집들의 거리의 최대값을 구하는 문제이다. 우선 가볍게 생각해보자 x좌표가 1인 집에서 간격이 5인 집의 x좌표는 몇일까? 당연히 6이다. 이 당연한 논리를 가지고 문제를 풀어볼 것이다. 간격을 이진탐색으로 선택하여 값의 조건을 ..
[알고리즘] 보이어・무어법
·
Algorithm
보이어・무어 알고리즘(Boyer-Moor algorithm) 이 알고리즘은 이전글에서 설명한 KMP보다 효율적이며 실제 프로그램에서 많이 사용되는 알고리즘이다. 패턴의 오른쪽부터 텍스트와 비교하기에 모든 텍스트와 비교할 필요없이 탐색이 가능하다. 패턴과 텍스트를 비교할 때 텍스트의 가장 뒷부분부터 비교한다. 비교해서 같지않은 문자열의 위치에 따라 패턴을 n만큼 이동시킨다. KMP와 동일하게 LPS를 만들어줘서 패턴의 반복되는 값을 찾아 문자열 검색을 효율적으로 이뤄지게한다. LPS 표의 각 자리의 값은 텍스트 인덱스의 위치마다 바뀐다. 어떤 기준으로 바뀔까? LPS = 패턴의 길이 값을 가진 27개의 정수를 담고 있는 리스트(대문자 기준이기에 소문자는 정수 개수 추가 필요) LSP[알파벳 인덱스] = 패..
[알고리즘] KMP 알고리즘
·
Algorithm
KMP 알고리즘(Knuth-Morris-Pratt Algorithm) 이 알고리즘을 이해를 쉽게 하기 위해서는 KMP알고리즘에서의 접두사와 접미사를 알고가야한다. 예시 하나로 설명하고 넘어가겠다. ex) apple이라는 문자열이 주어졌다. 1, a 2, ap 3, app 4, appl 5, apple 총 5개의 접두사를 갖는다. 1, e 2, le 3, ple 4, pple 5, apple 총 5개의 접미사를 갖는다. 위의 예시로 접두사, 접미사 설명은 충분할 것으로 본다. 이제 KMP 알고리즘 원리를 알아보겠다. 우리가 기존에 아는 완전 탐색법(브루트 포스법)으로 문자열 찾을 때는 문자를 일일이 비교를 해가면서 찾았다. 책의 한 페이지에서 문자열을 찾는다고 하면 우린 책을 텍스트라하며 찾고자하는 문자열..
[백준]백준 100솔
·
백준
백준100솔을 달성했다. 알고리즘을 공부하다보니 달성하게되었는데 골드까지 무난히 찍고싶다! 현재 1월 9일부터 현재까지 알고리즘 스터디 그룹에 참여해서 학습중이다.
개발자 성현
개발새발 블로그