오늘은 1차원 배열 문제를 풀어보는 날이다
목표, 기한을 세워두니 토요일이라고 늘어지지 않고 공부할 수 있는 것 같다 세상 뿌듯!!
풀면서 미리 알아둬야할 부분들을 정리해보았다 ^_^
풀수록 알아야 풀 수 있는 함수들이 많아져서 각 문제별로 조금씩 정리해보았다
[공통]
[10818]
: 첫번째 문제라서 크게 어려운 점은 없다. n으로 정수로 input받고, a를 리스트로 만들어서 min,max값을 출력하면 된다
다만, 아래 2가지는 나도 찾아보다가 알게된 Tip이니 참고하면 좋을듯하다^^
1.max, min값을 출력할 때는 min값을 먼저 작성해야 오류없이 출력될 수 있다
n = int(input())
a = list(map(int, input().split()))
print(min(a), max(a))
[2562]
: index -> list에 값이 어느 위치에 있는지 알려주는 함수이다
ex. A.index(a) --> A라는 리스트에 a의 위치를 알려준다
보통 0,1,2순서로 찾기 때문에 끝에 '+1'을 해줘야 1부터 순서를 센 결과값이 나올 수 있다
a = []
for i in range(9):
i = int(input())
a.append(i)
print(max(a))
print(a.index(max(a)+1))
[2577]
: str()함수는 ()안의 내용을 문자로 바꿔주는 함수이다
count()는 ()안의 개수를 세어주는 함수이다
단, count의 ()안에는 '문자'만!! 들어갈 수 있다
때문에 str()을 넣어서 풀었다
a = int(input())
b = int(input())
c = int(input())
d = str(a*b*c)
for i in range(10):
print(d.count(str(i)))
[3052]
:set() -> 중복값을 삭제해주는 함수라고 착각하고 사용했는데 다시 찾아보니 set은 여러값이 있을 때 하나의 '집합'으로 만들어주는 명령어이다.
근데 집합은 값이 중복될 수 없다는 특징을 가지고 있다
이러한 특징을 활용하여 set함수를 통해 중복값을 제거해줄 수 있다.
:len() -> list의 길이(개수의 개념)를 알 수 있는 함수이다.
개수라고 볼 수도 있긴 하지만 길이의 개념이 맞다 때문에 str(문자)도 넣을 수 있다
a=[]
for i in range(10):
i = int(input())
b = i%42
a.append(b)
print(len(set(a)))
[1546]
: 이 문제로 알게된 포인트는! 모든 시험점수에 "점수/M100"을 하지않고, 원래대로 평균을 내준 후 마지막에 "점수/M100"계산을 해줘도 결과는 같다는 것이다. 코드를 더 간단하게 작성할 수 있다
n = int(input())
m = list(map(int,input().split()))
s = 0
for i in m:
s = s + i
print(s/n/max(m)*100)
[8958]
: 어려웠다.... 눈물....
일단 t만큼 반복하는 for문을 작성하고 3가지를 정의하였다
1) 임의의 a에 O,x를 list로 받기
2) score는 점수를 0으로 설정
3) sum_score는 점수의 합 일단 0으로 설정
그리고 다시 a(O,x의 list)만큼 for문을 돌려서 출력하였다
만약 j(임의로 설정했음)가 'O'이라면 score 1씩 증가 -> else로 가지 않고 -> sum_score에 score값(1점)을 더해준다 -> 다시 if문으로 가게되어 'O'이라면 또다시 score이 1 증가되어 2점이 배정되는 방식으로 계산된다
*주의할 점 (괜히 시간낭비 하지 않도록....)
1) 'O'를 대문자로 작성해야한다
2) 들여쓰기 위치 꼭.......제발...
t = int(input())
for i in range(t):
a = list(input())
score = 0
sum_score = 0
for j in a:
if j == 'O':
score += 1
else:
score = 0
sum_score += score
print(sum_score)
[4344]
:
이 문제를 풀기 위해 알고 있어야하는 것들!!
1) a([1:]) -> '슬라이싱'이라는 이름을 가지고 있는 함수인데 a라는 리스트의 1번째부터 끝까지를 의미한다
2) sum() -> ()안의 내용을 모두 더해주는 함수
3) '%.3f' % b + '%' -> 문자형의 포맷팅을 사용했다....뭔소리인지 모르겠다... ㅋㅋ
어쨋든 b라는 값을 소숫점 3번째 자리('%.3f')까지 표기될 수 있도록 해준 것이다 끝에 '%'은 문자 그대로 표기하기 위해 넣은 것이라서 제외하고 생각하면 더 도움이 되지 않을까합니다 ㅎㅎ
c = int(input())
for i in range(c):
s = list(map(int, input().split()))
a = sum(s[1:])/s[0]
c = 0
for j in range(1, len(s)):
if s[j] > a:
c += 1
b = (c/s[0])*100
print('%.3f' % b + '%')
토요일도 쉬지 말고 공부...화이팅 모르겠고일단꾸준히 모일꾼