Learn to share,Share to learn

알고리즘 팁2 본문

알고리즘

알고리즘 팁2

Rogue One 2024. 1. 26. 18:16

1.  count 함수를 이용해 원소의 개수 세는법을 알아두자

N = input()
changes = []

# 첫 번째 문자를 리스트에 추가
changes.append(N[0])

# 문자열의 두 번째 문자부터 마지막 문자까지 확인
for i in range(1, len(N)):
    # 이전 문자와 다를 때만 리스트에 추가
    if N[i] != N[i-1]:
        changes.append(N[i])

# 0과 1의 개수 세기
sum_zero = changes.count('0')
sum_one = changes.count('1')

# 더 적은 개수 출력
print(min(sum_zero, sum_one))

 

2.

Python에서 * 연산자는 컬렉션의 요소를 개별적으로 출력하는 데 사용된다. 이를 "unpacking"이라고 하는데 예를 들어, 리스트에 여러 요소가 들어있다면, 이 연산자를 사용하여 각 요소를 개별적으로 출력할 수 있다.

print(num)과 print(*num)의 차이를 보자:

  1. print(num): 이 방식은 리스트 num 자체를 출력한다. 즉, 리스트의 대괄호([])가 포함된 상태로 출력되므로, 리스트가 [1, 2, 3]이라면, 출력은 [1, 2, 3] 형태로 나온.
  2. print(*num): 이 방식은 리스트의 각 요소를 개별적으로 출력한다. * 연산자가 리스트의 요소를 "unpack"하여 각각을 별도의 인자로 print 함수에 전달한다. 같은 예에서, 출력은 1 2 3 형태가 되므, 대괄호 없이 각 요소가 공백으로 구분되어 출력된다.

사실

for i in arr:
    print(i,end=' ')

로 적는게 일반적이긴 하다.

 

3. 비슷하게, 출력부분에서 join 에 대해서 알아두자.

print(''.join(list(word_front) + list(word_back)))

는 두 덱을 합친후(join),'연결문자'로 각 요소 사이에 문자또는 문자열을 삽입한다.

즉, 여러 문자열을 결합하는데 사용되며, ' '.join(문자열+문자열)을 통해 각 문자열을 공백을 삽입하며 합치는것이다.

 

4. 람다를 이용한 sort 자꾸 헷갈려하는데 기억하자.

numbers.sort(key=lambda x: (x[0], x[1]))

x: 가 먼저나오고, 그 다음이 정렬 기준이 나와야 하는거다.