Problem Solving
-
[백준] 10809번 문제 (알파벳 찾기) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 5. 16. 18:28
data = list(input()) outPut = '' for i in range(97, 123): ch = chr(i) if ch in data: outPut += (str(data.index(ch))+" ") else: outPut += "-1 " print(outPut) 내가 작성한 코드 우선 소문자 a-z의 유니코드 값인 97~122까지 순회하면서 ch 변수에 값을 할당했고 할당된 값이 입력된 data에 있으면 data의 존재한 ch의 인덱스를 스트링으로 변환하여 outPut 변수에 추가로 할당해주었다.
-
[백준] 1065번 문제 (한수) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 5. 16. 00:28
# 한수 구하기 # 한수 == 각 자리수들이 등차수열을 이루는 수 data = int(input()) count = 0 for index in range(data): if index+1 < 100: count += 1 elif index+1 != 1000: a, b, c = map(int, list(str(index+1))) if (c - b) == (b - a): count += 1 print(count) 내가 작성한 코드 우선 문제를 이해하는데 시간이 조금 걸렸다.. 문제는 입력된 수 보다 작은 한수를 구하는 건데 한수는 각 자리수들이 등차수열을 이루는 수 라고 한다. 예를 들어 123은 각 자리수들끼리 각각 1씩 차이가 나고 124는 1과 2가 1의 차이를 2와 4가 2의 차이가 나기 때문에 한수가..
-
[백준] 8958번 문제 (OX퀴즈) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 5. 16. 00:17
n = int(input()) for _ in range(n): quiz = list(input()) total = 0 score = 1 for i in range(len(quiz)): if quiz[i] == 'O': total += score score += 1 else: score = 1 print(total) 내가 작성한 코드 입력 OX문제가 주어지면 O가 나열된 개수를 세는 문제인데 예를 들어 OXOOOXOO 라고 입력이 주어지면 1+0+1+2+3+0+1+2 이런식으로 O가 여러개 연이어 있으면 +1씩 증가해 출력을 해주어야 한다. 그에 따른 방법으로 나는 기본적으로 점수를(score)를 1로 할당해 놓고 for 문에서 연이어 O를 찾을때마다 += 1 을 해줌으로써 연이은 O의 점수를 입력 받을..
-
[백준] 4673번 문제 (셀프 넘버) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 5. 16. 00:04
# data = 생성자를 통해 나온 숫자 arr = [] for i in range(1, 10000): nums = list(str(i)) data = i for j in range(len(nums)): data += int(nums[j]) arr.append(data) for k in range(1, 10000): if k not in arr: print(k) 내가 작성한 코드 우선 1~10000 사이에 생성자를 통해 나올 수 있는 숫자를 구해 arr에 넣어줬다. 그리고 다시 1~10000 사이를 돌며 arr에 없는 숫자를 print해주어 생성자가 없는 셀프넘버를 구해줬다. 분명 더 적은 양과 효율적으로 코드를 작성할 수 있을 것 같지만 우선 여기까지..
-
[백준] 4344번 문제 (평균은 넘겠지) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 5. 15. 23:33
import sys c = int(input()) total = [] for _ in range(c): data = list(map(int, sys.stdin.readline().split())) personNum = data[0] avg = 0 for i in range(personNum): avg += data[i+1] avg = avg / personNum overNumCnt = 0 for j in range(personNum): if data[j+1] > avg: overNumCnt += 1 total.append((overNumCnt/personNum) * 100) for k in total: print("%.3f%%" % (k)) 내가 작성한 코드 문제에 큰 특별한 점은 없어서 주어진 내용대로..