728x90
반응형

알고리즘 94

[파이썬] 프로그래머스_진료순서 정하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120835 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 새로운 리스트(e_sort)에 내림차순 정렬한 응급도를 저장한 후, emergency 리스트의 i값이 e_sort에서 가지는 인덱스에 +1 한 값을 answer에 넣어주면 된다. 코드 -파이썬 def solution(emergency): answer = [] e_sort = sorted(emergency, reverse=True) for i in emergency: answer.app..

[파이썬] 프로그래머스_최빈값 구하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120812 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 딕셔너리를 사용해서 각 숫자의 개수를 저장해두면 풀기 편하다. max value값과 같은 value를 가진 key의 개수만 파악하면 된다. 코드 -파이썬 import operator def solution(array): answer = list(set(array)) # 중복 제거한 array dic = {} for i in answer: dic[i] = array.count(i) #각..

[파이썬] 프로그래머스_시저 암호

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12926 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 이 문제는 대문자 / 소문자 / 공백을 따로 처리해줘야 한다. 각 알파벳에 n을 더한 후 알파벳을 구하면 되는데, z / Z를 넘어가면 다시 a / A로 돌아가야 한다. 이는 각 알파벳을 아스키코드로 변경한 후 계산하면 쉽다. 아스키코드 값을 보면 a : 97 - z : 122 A : 65 - Z : 90 이므로 각각 z / Z 값을 넘어가는지 확인해주면 된다. 넘어간다면 알파벳 개수(..

[파이썬] 프로그래머스_자릿수 더하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12931 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 각 자릿수를 구하려면 10으로 나눠서 그 나머지값을 보면 된다. 이제 그 다음 자릿수를 구하기 위해선 10으로 나눈 몫을 다시 10으로 나눠주면 된다. 코드 -파이썬 def solution(n): answer = 0 while n > 0: answer += (n % 10) n = n // 10 return answer

[파이썬] 프로그래머스_서울에서 김서방 찾기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12919 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 파이썬은 리스트에서 특정 원소의 인덱스를 반환해주는 index 함수가 있다. 코드 -파이썬 def solution(seoul): answer = seoul.index('Kim') return ("김서방은 "+str(answer)+"에 있다")

[파이썬] BOJ_1212(8진수 2진수)

문제 https://www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net 해설 https://www.ibm.com/docs/ko/aix/7.1?topic=adapters-ascii-decimal-hexadecimal-octal-binary-conversion-table ASCII, 10진수, 16진수, 8진수, 2진수 변환표 이 테이블에서는 ASCII, 10진수, 16진수, 8진수, 2진수 값 변환에 도움이 되는 정보를 참조할 수 있습니다. 표 1. ASCII, 10진수, 16진수, 8진수, 2진수 값 사이의 변환 ASCII 10진수 16진수 8진수 2진 널(null) ..

알고리즘/백준 2022.08.13

[파이썬] BOJ_2745(진법 변환)

문제 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 해설 이 문제는 파이썬에서 제공하는 int함수를 사용하면 쉽게 풀 수 있지만 그래도 진수 변환 방법만 알면 간단한 알고리즘으로 풀 수 있어서 작성해보았다. 2진수를 10진수로 변경해보았다. 위 방법처럼 계산만 해주면 된다. 우선 받은 문자를 역순으로 뒤집어 주면 편하다. 알파벳인지 숫자인지 구분한 다음, 알파벳이라면 실제 아스키 코드 값에선 A가 65이지만 문제에선 10으로 하기로 했으니 55..

알고리즘/백준 2022.08.12

[파이썬] 프로그래머스_두 개 뽑아서 더하기

문제 https://programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 해설 두 수 씩만 더하기 때문에 중복 for문을 통해 하나씩 더한 값을 구할 수 있다. 값이 answer 안에 없다면 answer에 넣어주고 마지막으로 오름차순 정렬만 해주면 답을 구할 수 있다. 코드 -파이썬 #프로그래머스 68644(두 개 뽑아서 더하기) def solution(numbers): answe..

[파이썬] BOJ_10866(덱)

문제 https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 해설 문제 제목대로 덱을 이용하여 풀면 된다. 코드 -파이썬 #백준 10866(덱) from collections import deque import sys n = int(sys.stdin.readline()) deq = deque() for i in range(n): x = sys.stdin.readline().split() if x[0] == 'push_front': de..

알고리즘/백준 2022.06.10

[파이썬] BOJ_10828(스택)

문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 해설 이 문제는 가장 기본적인 스택 문제이다. 코드 -파이썬 #백준 10828(스택) import sys n = int(sys.stdin.readline()) stack = [] for i in range(n): x = sys.stdin.readline().split() if x[0] == "push": stack.append(x[1]) if x[0] == "pop": if..

알고리즘/백준 2022.05.24
728x90
반응형