전체 글 208

(파이썬) 백준 알고리즘 - 10814번

나이순 정렬 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 정렬 기준은 1. 나이에 따라 오름차순 2. 가입한 순서에 따라 이다. 입력은 가입한 순서로 주어진다고 했고, sort로 정렬되는 배열의 경우 안정적임이 보장되어 같은 정렬 기준일 경우 원래 순서가 유지된다. 위 조건들에 따라 코드를 작성하면 다음과 같다. 1 2 3 4 5 N = int(input()) members = [list(input().split()) for _ in range(..

알고리즘 2021.08.27

(파이썬) 백준 알고리즘 - 1181번

단어 정렬 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 정렬의 기준을 살펴보면 다음과 같다. 1. 중복된 단어가 없어야 한다. 2. 단어의 길이가 짧은 것 부터(단어의 길이에 따라 오름차순) 3. 단어의 길이가 같다면 사전 순으로 단어를 정렬하기 전에 단어를 입력받을 때 부터 중복된 값이 있는지 확인한 후, 없으면 저장하도록 했다. 1 2 3 4 5 6 7 8 9 10 N = int(input()) words = [] for _ ..

알고리즘 2021.08.27

(파이썬) 백준 알고리즘 - 11650번, 11651번 / sort(), lambda 함수

좌표 정렬하기 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 좌표를 정렬하는 기준은 1. x좌표 오름차순 2. x좌표가 같을경우 y좌표 오름차순 이다. sort()함수는 사용자가 직접 정렬 기준을 정할 수 있어서 sort()를 사용해 코드를 작성했다. 1 2 3 4 5 6 import sys N = int(input()) coords = [list(map(int, sys.stdin.read..

알고리즘 2021.08.27

생활코딩 React 강의 (2) - 개발환경

React 공식 홈페이지 https://reactjs.org/ React – A JavaScript library for building user interfaces A JavaScript library for building user interfaces reactjs.org Toolchain 개발환경을 위한 것들을 모아 환경을 구성해주는 도구 create-react-app 다운로드 react 개발 환경을 위해 create-react-app이라는 앱을 다운받아 사용한다. https://github.com/facebook/create-react-app GitHub - facebook/create-react-app: Set up a modern web app by running one command. Set..

React 2021.08.26

생활코딩 React 강의 (1) - React 소개

React란? 페이스북에서 만든 UI 라이브러리 사용자가 정의한 사용자태그(Component)를 이용해 HTML을 작성할 수 있게 도와준다. React의 장점 1. 가독성이 좋다. 긴 코드 대신 나 와 같이 간단하게 표현할 수 있다. 2. 재사용성이 좋다. 다른 페이지에 같은 Component를 재사용할 수 있다. 3. 유지보수가 쉽다. Component의 내용을 수정하면 그 Component를 사용하는 모든 페이지에 자동으로 수정할 수 있다. 참고한 페이지 생활코딩 react 강의 1. 수업 소개 https://www.youtube.com/watch?v=XMb0w3KMw00&list=PLuHgQVnccGMCRv6f8H9K5Xwsdyg4sFSdi&index=1

React 2021.08.26

(파이썬) 백준 알고리즘 - 1427번

소트인사이드 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 각 자리수를 내림차순으로 정렬하기 때문에 두자리 이상의 수를 고려할 필요 없이 입력받은 문자 배열을 정렬한 후 출력해주면 된다. 1 2 3 N = list(input()) N.sort(reverse=True) print(''.join(N)) cs 문자열로 입력받아서 각 자리를 따로 list에 넣고, sort()로 정렬해준다. 문자로 정렬해도 아스키코드가 문자'1'은 48, 문자'9'는 57로 어차피 숫자 순서대로 정렬되기 때문에 굳이 숫자로 바꿔줄 필요가 없다. sort의..

알고리즘 2021.08.26

(파이썬) 백준 알고리즘 - 2108번 / Counter

통계학 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 입력받는 수의 개수(N)가 최대 500,000개까지 가능하므로 빠른 입력을 위해 sys.stdin.readline()을 사용했다. 평균값, 중간값, 범위는 쉽게 구할 수 있었는데 최빈값은 collections 모듈을 사용해서 처리했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import sys from collections import Counter N = int(in..

알고리즘 2021.08.26

(파이썬) 백준 알고리즘 - 10989번

수 정렬하기 3 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 수 정렬하기 2번과 다르지 않은 문제라고 생각했는데 똑같은 방식으로 코드를 작성하면 '메모리 초과'가 떴다. 다른 방법을 알아보았다. 1 2 3 4 5 6 7 8 9 import sys N = int(sys.stdin.readline()) numbers = [0] * 10001 for _ in range(N): numbers[int(sys.stdin.readline())] += 1 for i in ..

알고리즘 2021.08.25

백준 알고리즘(파이썬) - 2751번

수 정렬하기 2 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 이전에 풀었던 수 정렬하기 문제와 다를 것이 없다고 생각했다. 그런데 이 문제는 매우 많은 개수(1 ≤ N ≤ 1,000,000)의 데이터를 입력받기 때문에 2초의 제한시간을 초과하지 않는 것이 중요했다. 선택정렬의 경우는 시간복잡도가 O(n²)이고 병합정렬은 시간복잡도가 O(nlogn)이니까 병합정렬로 정렬 방법을 바꿔서 시도해봤다. 병합정렬은 그룹을 작게 나눈 다음 ..

알고리즘 2021.08.25

백준 알고리즘(파이썬) - 2750번 / 선택정렬

수 정렬하기 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 힌트에 시간 복잡도가 O(n²)인 정렬 알고리즘으로 풀 수 있습니다. 예를 들면 삽입 정렬, 거품 정렬 등이 있습니다. 라고 적혀있어서 내가 알고있는 선택정렬으로 코드를 작성했다. 선택정렬 방법은 아래와 같다. 1 2 3 4 5 6 7 8 9 10 11 12 N = int(input()) numbers = [] for _ in range(N): numbers.append(int(input())..

알고리즘 2021.08.25