https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제풀이 풀이 수포자의 케이스를 정의하고 각수포자별로맞은 개수를 카운팅하려했다. 정답의 길이가 길어서 반복되는 패턴을 어떻게 찾을까 고민했는데 각 수포자 케이스의 길이만큼 나눈 나머지가 결국 반복되는 패턴임으로 케이스를 나눈 index로 처리했다. 크게 눈에띄는 다른풀이방법은 없었다. function solution(answers) { const answer = []; // 수포자 케이스 분리..
[문제] stack https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제풀이 1. 첫 풀이 처음엔 단순히 스택구조로 쌓다가 역방향이면 없애주고 아니면 스택에 쌓다가 마지막 스택에 값이 남아있는 유무로 판단하려 했으나, 테스트케이스와 효율성에서 실패판정을 받았다. function solution(s) { let stack = []; for (const str of s.split('')) { if (str === '(') { stack.push..
[문제] https://school.programmers.co.kr/learn/courses/30/lessons/12930 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제풀이 내 풀이 문자열을 배열로 만들고 루프 돌면서 짝수일 경우 대문자 홀수일 경우 소문자로 변환 후 문자열로 반환해서 풀었다. function solution(s) { const arr = s.split(' '); const answer = arr.map((str) => [...str] .map((s, idx) => (idx % 2 === 0 ? s.toUpperCase() : s..
스택(STACK) 말그대로 차곡차곡 쌓듯이 데이터를 한쪽끝에서 넣거나 빼는 구조를 의미함 구조 LIFO(Last In, Fisrt Out) : 마지막에 넣은 데이터를 가장먼저 추출 FIFO(First In, Last Out) : 처음에 넣은 데이터를 가장 마지막에 추출 파이썬 관련 메써드 push() : 데이터를 스택에 추가 pop() : 데이터를 스택에서 꺼내기 백준에서 스택관련 문제풀이 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmic..
에라토스테네스의 체 소수를 판별하는 알고리즘이다. 소수란 '양의 약수를 두 개만 가지는 자연수'를 의미하며 2, 3, 5, 7, 11, ... 등이 존재. 이러한 소수를 대량으로 빠르고 정확하게 구하는 방법이 에라토스 테네스의 체 그리스의 수학자이자 지리학자인 에라토스테네스가 고안한 소수(素數)를 찾는 방법으로, 이 방법으로 소수를 찾으려면, 2부터 시작해 자연수를 차례로 쓴 다음, 2 이외의 2의 배수, 3 이외의 3의 배수, 5 이외의 5의 배수의 순서로 수를 지워나가 끝에 남는 수가 소수이다. 2부터 n까지의 숫자중에서 에라토스테네스의 체로 소수를 찾으려면, 2부터 시작해 n까지의 자연수를 차례로 쓴다. (2, 3, 4, ..., n) 그리고 2 이외의 2의 배수를 지운다(p=2). 이때 2가 최초..
문제 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제풀이 설탕무게를 5로 나누고 딱 떨어지면 설탕무게/5의 몫을 더해주고 종료. 나머지가 떨어지지 않으면 설탕무게에서 3키로를 빼고 가방증가. 5의 배수가 떨어질때까지 빼다가 정확한 값이 나오면 종료. 만약 나눌수 없는 값이 나올경우 -1로 출력 sugar = int(input()) bag = 0 while True: if (sugar % 5) == 0: bag = bag + (sugar//5) pri..
문제 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 문제풀이 나무 정상에 도달하면 떨어지지 않는다는것을 식으로 어떻게 표현할지 감이 올질 않았다. 단순하게 생각하면됫을것을 문제에서 제시한 그대로 올라가는 길이는 a, 떨어지는 길이는 b, 나무높이는 v로 변수를 선언하고 입력받은 세개의 수를 각각의 변수에 할당해 주었다. 나무에 도달하기 까지 걸린기간에 대한 식은 나무높이에서 마지막날에 올라간 거리를 뺴고 올라가는 길이와 떨어지는길이를 뺀 값을 나누면 값을 구할수 있었다. 이 나눈값이 소수일경우가 생겨..
문제 https://www.acmicpc.net/problem/1267 1267번: 핸드폰 요금 동호가 저번 달에 이용한 통화의 개수 N이 주어진다. N은 20보다 작거나 같은 자연수이다. 둘째 줄에 통화 시간 N개가 주어진다. 통화 시간은 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제풀이 n = int(input()) l = list(map(int, input().split())) y = 0 m = 0 for i in l: y += i // 30 * 10 + 10 m += i // 60 * 15 + 15 if y m: print('M %d' % m) else: print('Y M %d' % y) n이 통화시간이라하고 ..
문제 https://www.acmicpc.net/problem/1964 1964번: 오각형, 오각형, 오각형… 첫째 줄에 N(1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 문제풀이 오각형의 점의 개수는 다음과 같이 늘어난다 단계 합계 1 5 5 2 5 7 12 3 5 7 10 22 4 5 7 10 13 35 초기값 5와 추가되는 값 7을 변수할당해주고 입력값의 단계를 돌면서 3과 add를 start에 더해준다. add선언해준 변수가 있으니 1단계부터 for문이 시작. n = int(input()) start = 5 add = 7 for i in range(1, n) : start += add add += 3 print(start % 45678)
문제 https://www.acmicpc.net/problem/1076 문제풀이 리스트에 각 저항의 값에 해당하는 '색상' 순서대로 넣고 인덱스값을 활용하여 풀이 for문으로 입력을 받고 입력값에 해당하는 색상의 인덱스값을 뽑아 계산했다. 마지막 인덱스는 제곱계산에 활용 list = ['black','brown','red','orange','yellow','green','blue','violet','grey','white'] a,b,c = [input() for i in range(3)] result = ((list.index(a) *10) + list.index(b)) * (10**list.index(c)) print(result)