Python

💻 [CodeUp] Python 기초 100제

sehee00 2024. 11. 13. 12:13

 

📌기본이지만 자꾸 까먹는 개념들 

1. .split()으로 나눌 수 있다. 기본은 공백, .split(':') 이런 식으로 원하는 문자를 기준으로 나누기 가능 

2. print(a, b, sep="-") sep을 이용하여 출력 시 구분자를 입력할 수 있다. sep은 줄바꿈, end는 한 줄에 출력

3. s[a:b] 이면 a부터 b-1까지 출력된다. 

4. print('%x'%num) %x: 16진수(hexadecimal) 소문자로 출력, %X: 16진수(hexadecimal) 대문자로 출력 %o: 8진수(octal)로 출력 

5. ord(s): 문자 s을 10진수로 변환한다. 

6. chr(n): 정수 n을 유니코드 문자(chracter)로 변환한다. 

7. print(-n): 단항 연산자인 -(negative)를 변수 앞에 붙이면 부호가 반대인 값이 된다. 

8. 16진수 입력은 int(n, 16)과 같이 int() 함수의 두 번째 인자에 원하는 진수를 적으면 된다.

9. print(format(a,".2f")): '무조건 소숫점 n번째 자리까지 출력하라'는 문제는 '%.nf' 를 사용하자.

10. print(bool(n)): True/False 값이 출력된다. 

11. print(..., sep='') 으로 출력하면, 공백없이 모두 붙여 출력된다.

 

🔍 비트단위 시프트 연산

  • << : 첫 번째 피연산자의 비트를 두 번째 피연산자의 수(n)만큼 왼쪽으로 이동, 2를 곱하는 효과
  • >> : 첫 번째 피 연산자의 비트를 두 번째 피연산자의 수(n)만큼 오른쪽으로 이동, 2로 나누는 효과
  • 컴퓨터가 2진수를 사용하기 때문에 비트 연산은 일반적인 연산에 비해 속도가 빠르고, 메모리 사용이 효율적이다.
  • python에서 실수 값에 대한 비트시프트 연산은 허용되지 않고 오류가 발생한다. (실수 값도 컴퓨터 내부적으로는 2진수 형태로 저장되고 비트시프트가 처리될 수 있지만, python에서는 허용하지 않는다.)
n = 10
print(n<<1) # 10을 2배 한 값인 20 이 출력된다.
print(n>>1) # 10을 반으로 나눈 값인 5 가 출력된다.
print(n<<2) # 10을 4배 한 값인 40이 출력된다.
print(n>>2) # 10을 반으로 나눈 후, 다시 반으로 나눈 값인 2 가 출력된다.

 

🔍 비교 관계 연산자

  •  <, >, <=, >=, ==, != 총 6개가 있다. 
  • 결과를 True(참), 또는 False(거짓)으로 출력하는 불리언 값이다. 

🔍 비트 단위 논리 연산

  • 연산자 ~ 는 비트 NOT 연산자로, 비트가 1이면 0으로, 0이면 1로 반전시킨다.
  • 연산자 &는 비트 AND 연산자로, 대응되는 비트가 모두 1이면 1을 반환한다.
  • 연산자 |는 비트 OR 연산자로, 대응되는 비트 중에서 1이 하나라도 있으면 1을 반환한다.
  • 연산자 ^는 비트 XOR 연산자로, 대응되는 비트가 서로 다르면 1을 반환한다.

💡6092 - 이상한 출석 번호 부르기1

n = int(input())
nlist = list(map(int, input().split()))

d = [0 for i in range(24)]

for i in range(n):
    d[nlist[i]] += 1
    
for i in range(1, 24):
    print(d[i], end=' ')

 

💡6095 - 바둑판에 흰 돌 놓기 

n = int(input())

location = [[0 for i in range(20)] for j in range(20)]

for i in range(n):
    x, y = map(int, input().split())
    location[x][y] = 1

for i in range(1, 20):
    for j in range(1, 20):
        print(location[i][j], end=' ')
    print()