[4주차] 팀스터디노트

목해민·2023년 1월 28일
0

오늘은 팀원분 한분이랑 이번주에 파이썬 코딩테스트가 있어 파이썬 코딩테스트 연습을 위한 팀스터디를 진행하였다.

서로가 잘 설명해 줄수 있는 코드, 자신이 코드를 짜면서 문제가 있었던 부분의 해결한 점을 서로에게 공유해주었다.

<팀원분이 공유해주신 코드>

#4_042의 실습
flag = True
nameList = []
while flag:
    a = input('친구 이름 입력:')
    nameList.append(a)

    if len(nameList) == 5:
        flag = False
print(nameList)

nameList1 = nameList.sort(reverse=True)
print(f'내림차순:{nameList1}')#none으로 출력됨
nameList.sort(reverse=True)
print(f'내림차순:{nameList}')

nameList2 = nameList.sort(reverse=False)
print(f'오름차순:{nameList2}')#none으로 출력됨
nameList.sort(reverse=False)
print(f'오름차순:{nameList}')

#4_043의 실습
#3개의 숫자를 묶기
numbers = [4, 6, 7, 9]
result = []
for n1 in numbers:
    for n2 in numbers:
        for n3 in numbers:
            if n1 == n2 or n3 == n1 or n2 == n3: continue

            result.append([n1, n2, n3])
        #result.append([n1, n2, n3])# -> 출력결과가 다름:n3가 9로 고정, 동일한 수로도 출력됨

print(f'result : {result}')
print(f'result lenght: {len(result)}')

<내가 공유한 코드>

'''
이진검색 : 정렬되어 있는 자료구조에서 중앙값과 크고 작음을 이용해서 데이터를 검색한다.
​
리스트를 오름차순으로 정렬한 후 '7'을 검색하고 위치(인덱스)를 출력하자
[4, 10, 22, 5, 0, 17, 7, 11, 9, 61, 88]
'''
​
nums = [4, 10, 22, 5, 0, 17, 7, 11, 9, 61, 88]
print(f'nums: {nums}')
​
# 오름차순으로 정리
nums.sort()
print(f'nums: {nums}')
​
searchData = int(input('찾으려는 숫자 입력: '))
​
# 존재하지 않는 index -1로 초기화
searchResultIdx = -1
​
staIdx = 0
endIdx = len(nums) - 1
midIdx = (staIdx +  endIdx) // 2
midVal = nums[midIdx]
​
# nums가 0보다 작거나 88보다 크면 안되므로 범위 설정
while searchData <= nums[len(nums)-1] and searchData >= nums[0]:
​
    # 끝에 있는 data와 동일하다면
    if searchData == nums[len(nums)-1]:
        searchResultIdx = len(nums)-1
        break
​
    # searchData가 midVal보다 큰 경우
    if searchData > midVal:
        staIdx = midIdx
        midIdx = (staIdx +  endIdx) // 2
        midVal = nums[midIdx]
        print(f'midIdx: {midIdx}')
        print(f'midVal: {midVal}')
​
    # searchData가 midVal보다 작은 경우
    elif searchData < midVal:
        endIdx = midIdx
        midIdx = (staIdx + endIdx) // 2
        midVal = nums[midIdx]
        print(f'midIdx: {midIdx}')
        print(f'midVal: {midVal}')
​
    # searchData가 midVal와 같은 경우
    elif searchData == midVal:
        searchResultIdx = midIdx
        break
​
print(f'searchResultIdx: [{searchResultIdx}]')
'''
순위 : 수의 크고 작음을 이용해서 수의 순서를 정하는 것을 순위라고 한다.
'''
​
import random
​
scores = random.sample(range(50, 101), 20)
ranks = [0 for i in range(20)]
# 길이가 20이고, 아이템이 0인 리스트
#[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
​
# 연속된 두 수의 크기를 비교해서 인덱스의 값 1씩 추가
for idx, sco1 in enumerate(scores):
    for sco2 in scores:
        if sco1 < sco2:
            ranks[idx] += 1
​
print(scores)
print(ranks)
​
for i, s in enumerate(scores):
    print(f'score:{s} \t rank:{ranks[i] + 1}')
    # 순위가 0등이 되면 안되므로 ranks에 +1 해준다.
profile
데이터분석가

0개의 댓글