공부하기 509

[Python] 백준 풀기 1157 - 단어 공부

파이썬 백준 1157번 브론즈1 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 주어지는 단어의 길이는 1,000,000 이기 때문에 for loop 을 전체 돌리다가 혹시 시간 초과 걸릴까 싶어 최대한 파이썬 내장 함수를 이용하였다. 주어진 입력 문자를 하나하나 정리해가며 결과 출력을 시행하였다. 그 순서는 > 모두 대문자 변환 > 각각 문자 리스트 변환 저장 > set() 함수를 이용하여 중복 제거 및 존재 알파벳만 저장 > 존재 ..

공부하기/백준 2022.11.09

[Python] 백준 풀기 1406 - 에디터

파이썬 백준 1406번 실버2 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 문제 보기 분류: 자료 구조, 스택, 연결 리스트 문제 풀기 커서의 위치를 리스트 분할 위치로 정하고 각 명령어가 들어올 때마다 왼쪽 오른쪽으로 잘라서 저장하였다. list 보다 시간 복잡도에서 유리한 deque 를 사용하여 매번 주어진 명령에 대해 문자 위치를 변경하였다. (물론 list 를 사용하여 append, pop 으로 작성할 수도 있지만 deque 를 사용하..

공부하기/백준 2022.11.08

[Python] 백준 풀기 9095 - 1, 2, 3 더하기

파이썬 백준 9095번 실버3 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 문제 보기 분류: 다이나믹 프로그래밍 문제 풀기 나열되는 숫자들로 규칙성을 알아본다. 1 은 자기 자신 1 만 가능. 2 는 이전 1 에 1 더한것 그리고 자기 자신 2 가능. 3 은 어전전 1 에 2 를 더한것과 1+1 더한것 그리고 이전 2 에 1 을 더한것 그리고 자기 자신 3 가능. 4 부터 규칙성이 뚜렷해 진다. 합으로 만들수 있도록 주어진 숫자는 1, 2, 3 세 개 이기 때문에 다음 차례 n 에서는 이전에 계산되었던 합들을 1, 2, 3 의 경우에 맞춰..

공부하기/백준 2022.11.07

[JavaScript] 백준 풀기 2438 - 별 찍기 - 1

자바스크립트 node.js 백준 2438번 브론즈5 https://www.acmicpc.net/problem/2438 2438번: 별 찍기 - 1 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 www.acmicpc.net 문제 보기 분류: 구현 문제 풀기 입출력을 위해 fs 모듈을 불러온다 let fs = require('fs'); 백준에 저장된 input 데이터를 불러온다. readFileSync('/dev/stdin') let star 변수를 선언하여 inputdata 숫자만큼 for loop 을 돌리면서 별 "*" 를 추가하고, 프린트한다. let star = ""; for (let i = 0; i < inputdata; i++) { star += "*"; con..

공부하기/백준 2022.11.06

[Python] 백준 풀기 1874 - 스택 수열

파이썬 백준 1874번 실버2 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 보기 분류: 자료 구조, 스택 문제 풀기 문제를 풀기에 앞서 무슨 소리를 하는지 이해하는데 시간이 걸렸다. 결국은 검색을 통해 문제가 이야기하고자 하는 것의 방향성을 잡을 수 있었는데 그분들도 문제를 이해하는데 어려움이 있었다고 한다;;; 여하튼 문제에서 말하고자 하는 것은 sta..

공부하기/백준 2022.11.05

[Python] 백준 풀기 2587 - 대표값2

파이썬 백준 2587번 브론즈2 https://www.acmicpc.net/problem/2587 2587번: 대표값2 어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + www.acmicpc.net 문제 보기 분류: 정렬, 수학, 구현, 사칙연산 문제 풀기 statistics 라이브러리를 사용해 보았다. import statistics 입력받은 모든 값을 리스트에 저장하여, 평균은 statistics.mean() 함수로 찾고 중앙값은 리스트 5개의 원소중 index = 2 에 해당하는 원소를 찾는다. ave = statis..

공부하기/백준 2022.11.04

[JavaScript] 백준 풀기 2577 - 숫자의 개수

자바스크립트 nodejs 백준 2577번 브론즈2 https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 문제 보기 분류: 수학, 구현, 사칙연산 문제 풀기 문제에서 제시한 그대로 세 개의 곱을 계산하여 나온 결과를 0 부터 9 까지 for loop 을 사용하여 찾고자 하였는데 자바스크립트 검색을 하다 보니 더 좋은 아이디어를 보게 되었다. 곱을 하여 계산된 결괏값에 0 ~ 9 중의 숫자가 들어있으면 그 숫자로 분리하고, 그 분리 저장된 배열의 원소의 개수를 기반으로 찾는 방법이다. 코드 보기 let nu..

공부하기/백준 2022.11.03

[JavaScript] 백준 풀기 2588 - 곱셈

자바스크립트 백준 2588번 브론즈3 https://www.acmicpc.net/problem/2588 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 문제 보기 분류: 수학, 사칙연산 문제 풀기 줄 바꿈으로 저장되어있는 두 개의 숫자를 문자로 입력받아 각각 나눠 저장한다. const fs = require('fs'); const [num1, num2] = fs.readFileSync('dev/stdin').toString().trim().split('\n'); 첫 번째 입력받은 string 타입의 숫자는 integer 형태로 바꾸어 저장한다. const num1toInt = parseInt(num1); 두 번째 ..

공부하기/백준 2022.11.02

[JavaScript] 백준 풀기 10430 - 나머지

자바스크립트 백준 10430번 브론즈5 https://www.acmicpc.net/problem/10430 10430번: 나머지 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000) www.acmicpc.net 문제 보기 문제 풀기 문제는 나머지 연산에 대한 분배법칙이 어떻게 성립하는지를 이야기하고 있다. 이전에 백준을 풀면서 나머지 분배법칙을 생각지 못해 애를 먹은적이 있었다. 덧셈, 뺄셈, 곱셈에 대해서는 문제에서 제시한것처럼 간단한 형식을 보이지만 나눗셈에 대해서는 독특한 공식을 갖는다. Node.js의 built-in file system module fs 사용하여 파일을 읽어온다. const fs = require('fs'); 빈칸으로 띄어쓰기 되어있는 데이터 "..

공부하기/백준 2022.11.01

[Python] 백준 풀기 1654 - 랜선 자르기

파이썬 백준 1654번 실버2 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제 보기 분류: 이분 탐색, 매개 변수 탐색 문제 풀기 입력 받은 다양한 랜선중 가장 긴 선을 기준으로 하여 mid 값을 지속적으로 찾아 나간다. 이분할 하여 나온 mid 로 모든 랜선을 나누어 목표 개수 N 이 되도록 찾고, N 의 개수가 충족이 되면 최대 길이를 찾기 위한 분할이 계속 일어난다. start 와 end 가 만날때까지....

공부하기/백준 2022.10.31