728x90
반응형

분류 전체보기 115

[파이썬] BOJ_2231(분해합)

문제 https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 해설 분해합이 생성자 + 생성자의 각 자릿수이기 때문에 1부터 각 자릿수를 더해보면서 입력값 n과 같아지는 때를 찾으면 된다. 생성자가 여러개인 경우 가장 작은 생성자만 찾으라고 했으니 모든 생성자를 찾고 그 중에 가장 작은 수만 출력하는 것이 아니라 처음부터 가장 작은 생성자만 찾으면 된다. 1부터 시작이기 때문에 생성자를 찾으면 가장 작은 생성자가 되므로 그 ..

알고리즘/백준 2023.05.23

[파이썬] BOJ_8958(OX퀴즈)

문제 https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 해설 O가 연속해서 나오면 해당 문제의 점수는 연속된 O의 개수가 되기 때문에 다음 문제가 정답(O)인지 / 오답(X)인지 체크해야 한다. 쉽게 O의 개수를 체크하는 변수를 만들어 연속되면 +1을 해주고 그렇게 만들어진 변수의 값을 총 점수를 구하는 변수에 더해주면 된다. 코드 -파이썬 #백준 8958(OX퀴즈) n = int(input()) for i in range(n..

알고리즘/백준 2023.05.21

[파이썬] 프로그래머스_한 번만 등장한 문자

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120896 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 set으로 s의 중복을 제거한 후 리스트에 넣어줬다. 그리고 그 리스트를 이용해 반복문을 돌면서 s에서 리스트의 각 원소의 개수를 세어 딕셔너리에 넣은 후, value값이 1인 key값만 answer 리스트에 넣어줬다. 사전 순으로 정렬된 값을 요구하고 있기 때문에 오름차순 정렬을 한 후 join을 이용해 문자열로 만들면 된다. 코드 -파이썬 def solution(s): answer..

[파이썬] 프로그래머스_인덱스 바꾸기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120895 해설 num1과 num2의 문자를 바꿔야 해서 temp를 썼는데 그렇게 풀지 않아도 됐다.. 그냥 둘을 바꾸면 된다. def solution(my_string, num1, num2): string = list(my_string) string[num1],string[num2] = string[num2],string[num1] return ''.join(string) 이렇게.. 코드 -파이썬 def solution(my_string, num1, num2): string = list(my_string) temp = string[num1] string[num1] = string[num2] s..

[파이썬] 프로그래머스_문자열 계산하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120902 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 split()을 사용하면 공백을 기준으로 문자를 나눠준다. answer에 미리 시작 숫자를 넣어놓고 i값이 연산자일 때만 맞는 계산을 하도록 해주면 답은 쉽게 구할 수 있다. 이렇게 안해도 문자열로 식을 입력하면 해당식을 실행한 결과값을 반환해주는 함수가 있다. def solution(my_string): return eval(my_string) 이렇게 해도 답을 구할 수 있다. 코드..

[파이썬] 프로그래머스_팩토리얼

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120848 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 제한사항의 n은 10!까지이다. 그렇다고 범위를 1,11로 잡으면 n이 10!일 때 리턴을 하지 못하고 반복문이 끝나기 때문에 1,12로 반복문의 범위를 잡아줬다. 범위를 1,11로 잡고 싶다면 아래처럼 리턴문을 반복문 밖으로 빼버려도 된다. def solution(n): answer = [] mul = 1 for i in range(1, 11): mul *= i if mul

[파이썬] 프로그래머스_문자열 밀기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120921 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 데크의 rotate 함수를 사용하면 쉽게 회전시킬 수 있다. 1씩 회전을 시켜주면서 회전 횟수를 저장해주면 된다. 그러다 회전한 데크 A와 데크 B가 같아지면 회전 횟수를 리턴해주면 된다. 끝까지 회전해도 같지 않다면 그 때 -1을 리턴한다. - 다른 사람 풀이 중 데크 안쓰고 푸는 풀이 def solution(A, B): AA = A+A answer = AA.find(B) if an..

728x90
반응형