문제 https://www.acmicpc.net/problem/12931 12931번: 두 배 더하기 모든 값이 0으로 채워져 있는 길이가 N인 배열 A가 있다. 영선이는 다음과 같은 두 연산을 수행할 수 있다. 배열에 있는 값 하나를 1 증가시킨다. 배열에 있는 모든 값을 두 배 시킨다. 배열 B가 주 www.acmicpc.net 설계 - 반대로 접근하여, 주어진 배열을 모두 0으로 만드는 최소 횟수를 계산한다. N = int(input()) arr = list(map(int, input().split())) cnt = 0 while sum(arr) > 0: # arr이 모두 0이 될때까지 반복 check = 0 for i in range(N): # 전부 짝수인지 check if arr[i] % 2 =..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120864 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 숫자의 경우 연속된 숫자(32의 경우 3, 2를 각각 더하는 것이 아니라 묶어서 32)를 더해야한다. - start와 end를 사용하여 answer에 더할 범위 지정 def solution(my_string): answer, start, end = 0, 0, 1 for i in range(len(my_string) - 1): if my_string[i].isdigit() and m..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120866 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 폭탄이 연쇄적으로 터지는 것을 막기 위해 visit 배열에만 check 한다. def solution(board): n = len(board) visit = [[0] * n for _ in range(n)] for x in range(n): for y in range(n): if board[x][y] == 1: visit[x][y] = 1 for i in range(8): dx =..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120869 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 def solution(spell, dic): for i in range(len(dic)): if len(dic[i]) == len(spell): # 한번씩만 사용하므로 길이 확인 cnt = 0 for j in range(len(spell)): # 각 단어를 사용했는지 여부 확인 if spell[j] in dic[i]: cnt += 1 if cnt == len(spell): # 각 단..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 3의 배수 또는 '3'이 포함될 경우 answer + 1을 해준다. - while문 안에서 각 10진법 단계마다 위 2개의 조건이 만족할때까지 answer을 조정해준다. ※ 참고 : 30, 31, 32 .... 39 까지 모두 건너뛴다. def solution(n): answer = 0 for i in range(n): answer += 1 while 1: # while문 안에서 ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120876 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 선분을 bucket에 담아 겹치는 선분, 즉 bucket 2이상의 개수를 구한다. def solution(lines): answer = 0 lines.sort() bucket = [0] * 201 # -100 ~ 100 => 100 ~ 201 # 선분 bucket에 담아 count for i in range(3): if lines[i][1] > lines[i][0]: for j i..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120848 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - n 이하이기 때문에 -1, while문 안에서 자동으로 +1이 되기 때문에 -1 이 추가로 필요 → 마지막에 -2를 해준다. def solution(n): i, total = 1, 1 while total
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 정렬 후 (음수 * 음수) 또는 (양수 * 양수)로 계산하는 경우가 가장 크다 def solution(numbers): numbers.sort() answer = max(numbers[-1] * numbers[-2], numbers[0] * numbers[1]) return answer