4일차 코드 복습

Chaejung·2021년 12월 23일
0

알고리즘_Python

목록 보기
1/22

앞으로 백준 문제를 풀면서 새롭게 알게된 문법, 또는 유용한 문법 등을 정리할 예정이다.
아직은 4일차 밖에 안됐지만 깃허브 잔디 심는 것처럼 날짜를 하나씩 채우는 게 보람차고 출석체크하는 기분이 들어 재밌다.
(근데 정작 깃허브는 지금 안중에도 없다)
소소한 목표는 하루도 빠짐없이 초록초록하게 메꾸는 것!

푼 문제

1000 1008 1085 1546 2557 2588 2675 2739 2750 2884 5355 10039 10718 10757 10809 10818 10952 14681 15552 15596

이게 날짜 별로 어떤 문제를 풀었는지 안 나오는 것 같은데,
나중에 N일차 때 그때 누적된 푼 문제들에서 오늘차 푼 문제들을 빼면 되겠지?
리스트화해서 빼버리면 잘 나오겠지?
이것도 파이썬으로 처리할 수 있을 것 같다.

새롭게 알게 된 문법

1546번

공백으로 구분된 입력받은 점수들을 split 함수로 list를 만들었는데
항목이 문자열로 들어간다.
근데 평균 계산하는 문제여서 정수 변환이 필요한데
이걸 for문을 돌려서 정수형으로 변환하고 다시 넣기에는 번거로워서

문자열 목록을 정수로 변환하기

구글링을 해보았다.
아주 간단한 문법!
<기본 형태>

map(function, iterable)

<문자열을 정수 목록으로 변환하기>

map(int, listName)

그래서 내가 원하는 코드

list(map(int, input().split(' ')))

최종 코드

subNum=input()
grade=input()
gradeList=grade.split(' ')
intGradeList=list(map(int, gradeList))
maxGrade = max(intGradeList)
newGrade = []
for i in intGradeList:
    manGrade=i/maxGrade*100
    newGrade.append(manGrade)
total = 0
for grades in newGrade:
    total += grades
print(total/int(subNum))

10809번

알파벳 하나당 입력받은 문자열에 몇번째 위치하는지 출력하는 문제
알파벳을 리스트로 만들려다가
아... 이건 분명히 직접 하나씩 두들기지 않아도 만들어 놓은 모듈이 있을 거다 싶어서

구글링 해보았다.
알파벳 자동 생성 방법

생각보다 정말 간단했다.

from string import ascii_lowercase

alphabet_list = list(ascii_lowercase)

결과값을 List로 도출했다.
그런데 원하는 출력값은 문자열형식이었는데,

여기서 애초에 결과값을 만들 때,
문자열형식으로 다시 갖다붙여볼까는 생각을 했다.
거기서 문제되는 건 띄어쓰기
마지막 항목에서 띄어쓰기가 돼버리면
정답 처리가 안될 것 같았다.

아니면 print할 때 띄어쓰기만 되도록 하는 방법을
생각해봤으나 딱히 방법이 떠오르지 않아서

구글링해보았다.
리스트를 문자열로, 문자열을 리스트로

join함수를 쓰려했다가 결과값들이 정수형이라서
오류가 났다.

그래서 문자열을 글자 단위로 분리하여 리스트로 변환하는 방법으로

print(*listName)

최종 코드

from string import ascii_lowercase
strS = input()
alphabet_list = list(ascii_lowercase)
findList = []
for i in alphabet_list:
    findNum = strS.find(i)
    findList.append(findNum)
print(*findList)

건드렸는데 못 푼 문제

10951번

실패한 코드들

testCase = input()
while testCase == True:
    num1=int(testCase.split(' '))
    num2=int(testCase.split(' '))
    numSum = num1+num2
    print(numSum)

하나의 케이스 결과조차 출력이 안됨

testCase = input()
testCaseList = testCase.split('\n')
i = 0
sumList = []

while i<=len(testCaseList):
    for j in testCaseList:
        num1 = int(j.split(' ')[0])
        num2 = int(j.split(' ')[1])
        result = num1 + num2
        sumList.append(result)
    i += 1

for k in sumList:
    print(k)

케이스 하나 넣으면 그 해당 결과만 두번씩 출력됨

일단 앞으로 조금씩 파보는 걸로

profile
프론트엔드 기술 학습 및 공유를 활발하게 하기 위해 노력합니다.

0개의 댓글