본문 바로가기

Algorithm/구현92

[Python3] 백준 1373번 2진수 8진수 1373번: 2진수 8진수 (브론즈1) 문제 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 정답 oct, int 함수를 사용하는 문제 내 정답1) 2진수를 10진수로 변환하고, 8진수로 변환하였으나 시간 초과로 오답처리 되었다. 보통 대부분 사람들이 이와 같은 flow로 문제를 해결하려고 한 것을 알 수 있었다. 풀이) 1. 2진수는 자릿수가 1,2,4,8,.. 이기 때문에 처음에 num을 1로 지정해주고 나중에 2씩 곱해준다. 2. 2진수 리스트의 가장 오른쪽 값부터 num 자릿수를 곱해주어 총 합으로 10진수를 구한다. 3. 10진수를 8로 나누어 나머지는 str 형태로 저장해둔다. (str로 하는 이유는 .. 2023. 1. 10.
[Python3] 백준 1357번 뒤집힌 덧셈 1357번: 뒤집힌 덧셈 (브론즈1) 문제 1357번: 뒤집힌 덧셈 어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev( www.acmicpc.net 정답 X[::-1]을 사용하면 되는 문제 [::-1]가 reverse라는 것을 또 잊어버리고, 어렵게 풀어버렸다 ㅠㅠ 맞췄으니 올려는 본다... (내 정답1 풀이) 정답2로 먼저 맞추고, 이를 함수화한게 정답1이다. X의 첫 숫자(왼쪽, 가장 큰 숫자)부터 작은 자릿수를 곱해주는 형식으로 reverse 했다. !유의할 점! 1. X입력값이 숫자라서 len이 안된다는 점! .. 2023. 1. 9.
[Python3] 백준 1356번 유진수 1356번: 팀 이름 정하기 (브론즈1, 구현) 문제 1356번: 유진수 첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다 작거나 같은 자연수이다. www.acmicpc.net 정답 리스트 원소들 곱해서 비교하는 문제! 비교적 쉬운 단순 구현 문제였다. 3번만 시도하고 맞추어서 너무 행복하다!!! (내 정답 풀이) 1. N을 앞부분 숫자와 뒷부분 숫자를 인덱싱해서 나눈다. int도 리스트형태로 인덱싱할 수 있다. 유의할 점은 range범위! 나는 더 직관적으로 1부터 마지막len(N)까지로 했는데, 뜻만 같으면 모두 가능하다. 2. 각 리스트 값 for문으로 곱해주기 3. A와 B가 같다면 yes=1. 4. for문에서 N을 모든 경우로 나눈 후에도 yes=1이면 yes 출력 아니면(한.. 2023. 1. 9.
[Python3] 백준 1296번 팀 이름 정하기 1296번: 팀 이름 정하기 (브론즈1, 구현) 문제 1296번: 팀 이름 정하기 연두는 프로그래밍 대회에 나갈 팀 이름을 정하려고 한다. 미신을 믿는 연두는 이환이에게 공식을 하나 받아왔고, 이 공식을 이용해 우승할 확률이 가장 높은 팀 이름을 찾으려고 한다. 이환 www.acmicpc.net 정답 특정 문자열 찾아서 count하는 문제! 내 풀이 방식은 count를 사용안한 형태이다. 250번은 시도해서 정답은 맞추었다 ㅎㅎ 100줄 코딩한거 오랜만이었다. (내 정답 풀이) 1. 입력 형태는 똑같다. sort를 사용해서 team이름을 사전순으로 정리한다. 2. 연두이름에서 LOVE를 찾아서 L,O,V,E 리스트에 넣어서 sum으로 총 개수를 구한다. 각 문자열의 index를 뽑았을 때 한개도 없어 오.. 2023. 1. 6.
[Python3] 백준 1292번 쉽게 푸는 문제 1292번: 쉽게 푸는 문제 (브론즈1) 문제 1292번: 쉽게 푸는 문제 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. www.acmicpc.net 정답 이중 반복문 문제! 내 풀이 방식은 반복문을 사용안한 노가다 형태이다. 정답은 잘나오는데, 백준에 제출했더니 시간초과로 오답처리되었다. 악으로 깡으로 맞췄다는 거에 만족한다.. 최근에 1193번을 풀었어서 입력값이 몇번째 줄에 몇번째 숫자인지 찾으려고 했다. 문제에 예제로 나온 것으로 설명해보겠다. 입력 3 7 / 출력 15 3은 2번째 줄 2번째 숫자이고, 7은 4번째 줄 1번째 숫자인 걸 먼저 찾고, 하나씩 경우를 따져서 더해줬다.. 2023. 1. 5.
[Python3] 백준 1268번 임시 반장 정하기 1268번: 임시 반장 정하기 (브론즈1) 문제 1268번: 임시 반장 정하기 오민식 선생님은 올해 형택초등학교 6학년 1반 담임을 맡게 되었다. 오민식 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다. www.acmicpc.net 정답 이해 못함 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 공부한 내용 레퍼런스 다른 정답 풀이 이해하려다가 포기했습니다... 내일 다른 풀이로 다시 도전합니다 [BaekJoon] 백준 1268 임시 반장 정하기 (Python / 파이썬) BaekJoon 백준 1268 임시 반장 정하기 문제는 1학년부터 5학년까지 지내오면서 한 번이라도 같은 반이었던 사람이 가장 많은 학생을 임시 반장으로 정하려 한다. 각 학생들이 1학년부터 5학년까지 속.. 2023. 1. 5.
[Python3] 백준 1259번 팰린드롬수 1259번: 팰린드롬수 (브론즈1) 문제 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 정답 내 이름은 이효리, 거꾸로 해도 이효리 '팰린드롬' 문제! 입력값(n)을 왼쪽/오른쪽부터 차례대로 비교하면서 같으면 yes를 출력 아니면 no를 출력하는 형태 내 풀이 방식은 보통 사람들의 방식보다 지저분하고 복잡하지만.. 정답으로 인정되었으니 기뻐서 공유해본다 ㅎㅎ 1. n[::-1]가 익숙치 않아서 활용하지 못했다. 2. 입력을 한꺼번에 다 받고, 한꺼번에 출력해야하는 문제로 이해해서 list에 append 하는 형태로 한꺼번에.. 2023. 1. 4.
[Python3] 백준 1236번 성 지키기 1236번: 성 지키기 (브론즈1, 구현) 문제 1236번: 성 지키기 첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다 www.acmicpc.net 정답 입력받은 n개의 행에서 X가 있지 않은 행의 개수와 m개의 열에서 X가 있지 않은 열의 개수를 찾아서 최대값을 구하는 형태 n,m = map(int,input().split()) #n,m 입력 array = [] for _ in n: array.append(input()) #n개의 행만큼 array 리스트 생성 a,b = 0,0 #a=행개수/b=열개수 for i in range(n): #행 한개씩 .. 2023. 1. 3.
[Python3] 백준 1193번 분수찾기 1193번: 분수찾기 (브론즈1) 문제 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 정답 몇 번째 line에 있는지 확인하고, 홀/짝에 따라 분모, 분자 오름/내림차순을 지정하는 형태 지그재그 규칙 찾기! X = int(input()) line = 1 # line를 한개씩 늘려가며 빼서 몇번째 줄에 몇번째 숫자인지 # 1,2,3,4번째 line은 원소 개수 1,2,3,4개 # line = 1일 때만 제외한 while 문 while X > line: #X=5 X -= line #4,2 => 2번째 원소 line += 1 #2,3 => 3번째 줄 if line%2 == 0: #짝수번째 줄 a = X #분자 오름차순 b = line-X+1 #.. 2023. 1. 3.
[Python3] 백준 1157번 단어 공부 1157번: 단어 공부 (브론즈1) 문제 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 정답 리스트 set, append, count, index 함수를 활용하는 형태 input = 'Mississipi' word = 'MISSISSIPI' unique_word = [M,I,S,P] cnt_list = [1,4,4,1] word = input().upper() #대문자로 출력 unique_word = list(set(word)) #고유 알파벳 리스트 저장 cnt_list = [] for i in unique_word: cnt = word.c.. 2022. 12. 29.