incastle의 콩나물

코딩 테스트 준비 잡다 팁 본문

python/알고리즘

코딩 테스트 준비 잡다 팁

incastle 2019. 4. 26. 12:54

1. 후보키 문제

 

relation=[["100","ryan","music","2"],
["200","apeach","math","2"],
["300","tube","computer","3"],
["400","con","computer","4"],
["500","muzi","music","3"],
["600","apeach","music","2"]]

내가 고민했던 건 '열'이라는 정보를 어떻게 뽑지? numpy를 안쓰고 어떻게 하지?

for v in relation:
    for i, item in enumerate(v):
        print(i, item)
    print('------')


0 100
1 ryan
2 music
3 2
------
0 200
1 apeach
2 math
3 2
------
0 300
1 tube
2 computer
3 3
------
0 400
1 con
2 computer
3 4
------
0 500
1 muzi
2 music
3 3
------
0 600
1 apeach
2 music
3 2
------

enumerate가 있었다!

 

 

 

2. list안에 두 개씩 묶어서 넣는 걸 은근 많이 사용한다. 

 

 

3. 문자열을 처리할 때 숫자를 list로 바꾸면서 1의 자리는 상관 없는데 10 자리의 의미를 살리고 싶을 때가 있다. 

dartResult='1D2S#10S'
point = []
dartResult = dartResult.replace('10','k')
point = ['10' if i == 'k' else i for i in dartResult]
print(point)

1) 원하는 정보를 한 자리 수의 다른 문자로 token화를 해주고 list로 변경한다

2) 그 결과에서 한 자리 문자를 다시 숫자로 바꿔준다. 

 

 

4.

and나 or을 써서 if 문을 만들 때 

(완벽한 조건) and (완벽한 조건)을 사용하자

 

 

5. 2진수 이용할 때 꿀팁

https://withcoding.com/69

 

파이썬 비트연산자 사용법 정리 (Python 비트연산)

라즈베리파이 같은 하드웨어가 인기를 끌면서 (C언어 만큼은 아니지만) 파이썬으로 하드웨어를 제어하는 경우가 늘어나고 있습니다. 하드웨어 쉽게 제어하기 위해서는 비트연산자를 잘 사용할 수 있어야 합니다...

withcoding.com

bin함수를 이용할 때 다양한 연산자들이 존재한다. 잘 사용하면 진짜 꿀임

 

6. if문 만들  때

def solution(str1, str2):

    list1 = [str1[n:n+2].lower() for n in range(len(str1)-1) if str1[n:n+2].isalpha()]
    list2 = [str2[n:n+2].lower() for n in range(len(str2)-1) if str2[n:n+2].isalpha()]

    tlist = set(list1) | set(list2)
    res1 = [] #합집합
    res2 = [] #교집합

    if tlist:
        for i in tlist:
            res1.extend([i]*max(list1.count(i), list2.count(i)))
            res2.extend([i]*min(list1.count(i), list2.count(i)))

        answer = int(len(res2)/len(res1)*65536)
        return answer

    else:
        return 65536

생성한 list안에 원소가 있냐 없냐를 if list:를 사용해서 깔끔하게

 

7. rjust 함수

 

오른쪽 정렬은 rjust 라는 함수를 사용하고, 왼쪽 정렬은 ljust 라는 함수를 사용
예를 들어서 다음과 같은 조건이 있다고 하면.

1. 문자열 a에 값 "123"이 입력되어 있음

2. 문자열 a를 크기가 10인 문자열로 만들고, 오른쪽으로 정렬하고 싶음

이때 사용할 수 있는 함수는 rjust가 되겠죠.
간단하게 소스로 나타내보면 다음과 같습니다.

a = "123"
print a.rjust(10)

결과 = '       123'
출처: https://ngee.tistory.com/397 [ngee]
a = "123"
print a.rjust(10, '#')
결과 = '#######123'

 

8. replace 함수

replace를 까먹고 계속 if문을 사용한다. 코드를 간략하게 사용하자!

변수.replace(원본,바꿀형식)

 

9. 반올림

반올림 하는 문제가 나올 수 있다고 해서

round(3.123456, 2)

 

10. list안에 list

a= [ [1,2], [3,4] ]

일 때 for 문을 돌리면

for i,k in a:

이렇게 i, k 할 수 있다는 거 계속 까먹는다!!!

 

11. append만 사용하는데 pop이나 insert도 잘 써먹자!!!

 

12. 

budgets = [120,110,140,150]
M = 485

while True:    
    if sum(budgets)<M:
        answer=max(budgets)
        break

    budgets=list(map(lambda x: x if x<=lim else lim,budgets))
    print(budgets)
    lim=lim-1

while문 안에서 돌아가는 모습

Comments