오늘은 1차원 배열 문제를 풀어보는 날이다
목표, 기한을 세워두니 토요일이라고 늘어지지 않고 공부할 수 있는 것 같다 세상 뿌듯!!

풀면서 미리 알아둬야할 부분들을 정리해보았다 ^_^
풀수록 알아야 풀 수 있는 함수들이 많아져서 각 문제별로 조금씩 정리해보았다

[공통]

  • 리스트로 만들어주려면 list()가로 안에 조건을 넣어주면 된다
    또는 a=[]형태로 작성하면 list로 인식한다
  • append -> list 안에 넣어달라고 요청하는 명령어
    ex.A.append(a) --> A라는 리스트에 a라는 값을 넣어줌

[10818]

: 첫번째 문제라서 크게 어려운 점은 없다. n으로 정수로 input받고, a를 리스트로 만들어서 min,max값을 출력하면 된다

다만, 아래 2가지는 나도 찾아보다가 알게된 Tip이니 참고하면 좋을듯하다^^

1.max, min값을 출력할 때는 min값을 먼저 작성해야 오류없이 출력될 수 있다

  1. 새로운 방법으로는 sort()함수를 사용해서 풀수도 있다
    오름차순대로 정렬하는 방법인데 sort()를 썼을 경우
    print('함수이름'[0] , '함수이름'[-1] ) --> 오름차순으로 적을 때 0번째가 max값 / -1은 0번째 1칸 앞에있는 숫자를 의미하는데 없기 때문에 가장 마지막 숫자를 출력하여 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 + '%')

토요일도 쉬지 말고 공부...화이팅 모르겠고일단꾸준히 모일꾼

profile
ɪ ʜᴏᴘᴇ ᴛᴏ sᴏʟᴠᴇ ʀᴇᴀʟ ᴘʀᴏʙʟᴇᴍs👩🏻‍💻❤️

0개의 댓글