알고리즘/Baekjoon
-
[백준][Python] 5622번: 다이얼알고리즘/Baekjoon 2022. 7. 29. 14:49
https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net - 처음에 알파벳 다이얼이 3씩 나누어진줄 알고 코드짰었다. 문제를 제대로 읽자 ㅜㅠ - 규칙적으로 나누어진게 아니다보니 처음부터 리스트에 알파벳을 정의하고 시작한다. - 정의된 list를 하나씩 꺼내고 그 안에 있는 알파벳을 또 하나씩 꺼내서 입력된 알파벳이랑 같으면 +3을 해주면 된다. alpabet_list = ['ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ'] s = input().upper() #대문자로 입력 받음 WA result..
-
[백준][python] 1157번: 단어 공부알고리즘/Baekjoon 2022. 7. 29. 13:57
https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net - 처음에 알파벳 input()으로 받고 그걸 for 문으로 돌려서 소문자로 바꿨는데, 아예 처음부터 소문자로 받아도 되는걸 찾아보고 알았음! - dictionary로 풀어야되나 처음에 생각했는데 출제자가 거기까지 생각하고 풀으라고 낸 것 같지는 않아서 그냥 리스트 두개 만들어서 index로 연결해 줬음 s = input().lower() #mississipi 소문자로 받기 s_set = list(set(s)) # m,i,s,p ..
-
[백준][python] 10890 : 알파벳 찾기알고리즘/Baekjoon 2022. 7. 27. 15:50
https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 1. for문 s = list(map(str, input())) alphabet ='abcdefghijklmnopqrstuvwxyz' for i in alphabet: if i in s: print(s.index(i), end=' ') else: print(-1,end=' ') 2. find()로 바로 찾기 s = list(map(str, input())) alphabet ='abcd..
-
[백준][python] 4673번: 셀프 넘버알고리즘/Baekjoon 2022. 7. 27. 15:01
https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 규칙을 알아낼려고 방정식을 계속 세워봤지만 해결이 안됐음.. set 집합형으로 문제를 푸는 방식이 있었다. 전체숫자 1~10000까지 미리 정의하고 생성자 있는 수를 차집합으로 빼는 방법이다. 그리고 각 자리 숫자를 더할때 나눗셈, 나머지 연산자가 아니라 각 자리 숫자를 문자열로 나누어서 그걸 다시 숫자로 바꾸어서 더하는 방식이다. natural_..
-
[백준][python] 11720번: 숫자의 합알고리즘/Baekjoon 2022. 2. 3. 21:54
https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 처음에 단순하게 이렇게 풀었다. 공백없이 연속적으로 map을 이용해서 입력받고, sum함수안에 슬라이싱을 통해 다 더해줬음 n = int(input()) num = list(map(int,input())) ans = sum(num[0:]) print(ans) 다른 방법도 찾아봤다. 해결 아예 공백없이 숫자를 입력받을 때 문자열로 입력을 받고, 정수형으로 바꿔줘서 total에 더해주는 방법도 있다. N = int(input()) result = input() total = 0 fo..
-
[백준][python] 4344번: 평균은 넘겠지알고리즘/Baekjoon 2022. 2. 3. 21:42
https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net 해결 for문 돌릴 때 슬라이싱을 이용할 수 있다. for score in stu_list[1:] 아주 요리조리 쓸모있게 사용할 수 있구만! 그리고 .. 출력 형식 주의.. f-string을 이용해서 편리하게 쓸 수 있다. f-string은 파이썬 3.6이상부터 지원된다. 가독성이 이전의 포맷형식들 보다 낫기 때문에 fstring에 익숙해지자 print(f'{result:.3f}%') n = int(input()) cnt=0 stu_list=[] for _ in range(..
-
[백준][python] 1546번: 평균알고리즘/Baekjoon 2022. 2. 3. 21:28
https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 내 코드 n = int(input()) lst = list(map(int,input().split())) new_lst=[] for i in lst: new_lst.append(i/(max(lst) *100)) total = sum(new_lst) / n print(total) 해결 사실... 왜 틀린지 아직도 모르겠다... 다른것이라곤 max()함수를 따로 빼서 쓴거? append()안에서..
-
[백준][python] 3052번: 나머지알고리즘/Baekjoon 2022. 2. 3. 21:20
https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 해결 처음에 cnt변수를 따로 생성해서 배열마다의 cnt을 따로 구해 그걸 또 배열에 넣었음 .. set이란 함수가 중복을 제거하는 기능을 가지고 있다는 것을 알았다. 즉, set함수는 리스트의 중복되는 값을 제거한 집합을 반환함! add : 하나의 값 추가 update: 여러개의 값 update remove : set내의 값 삭제 num=[] for i in range(10): n = int(input()) num.append(n%42) num = set(num) ..