![[백준 33675번] L-트로미노 타일링 (python)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdJvpYH%2FbtsNiYuAioM%2FAAAAAAAAAAAAAAAAAAAAAI9k6zVqawPw3DAW54JztNXPdXk5hM8x2tA8knvxeXMS%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3Dr8er9m8r92RxnUs0n6CDO3RL%252B30%253D)
1. 문제설명L-트로미노는 1×1 블록 3개가 L자 형태로 연결된 도형입니다. 이를 회전하거나 대칭해서 사용할 수 있으며, 3×N 보드에 빈틈 없이 채우는 경우의 수를 구하는 것이 목표입니다.2. 오답코드test = int(input())for i in range(test) : dp = [0,2] n = int(input()) for i in range(n) : if i ❌ 오답 코드에서의 실수점화식이 잘못되었음 (일반적인 dp 형태 아님)L-트로미노 타일링은 f(n) = 2^(n/2)의 수학적 규칙으로 푸는 문제리스트 인덱싱 오류 발생 가능 (dp[i]를 선언 없이 대입함)3. 정답코드 및 접근법T = int(input()) for _ in range(T): N = i..
1. 문제 설명32953번 "회상" 문제는 특정 일 수 동안 별을 모으는 과정을 시뮬레이션하면서, 조건을 초과했을 경우 별을 초기화하고 회상 횟수를 세는 문제입니다. 가장 큰 별 획득량을 매일 더해가며 총량이 K를 넘을 경우 회상을 진행합니다.2. 오답 코드 분석n, d, k = map(int, input().split(' '))s = list(map(int, input().split(' ')))max_num = max(s)answer = 0num = max_numfor i in range(d) : num += max_num if num >= k : answer += 1 num = 0print(n) 오답 코드에서는 num을 max_num으로 시작하면서, 처음부터 하루..
![[백준] 32953번 - 회상, python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FTUcwD%2FbtsMXpS0POQ%2FAAAAAAAAAAAAAAAAAAAAAP-avrrOLe8g7-QxcQT_kEtdWMbRYPdSjKb7qmh50f1A%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DgrbYgYlxixU9MPoleSMlIVAnakA%253D)
문제백준 32953번 '회상' 문제는 각 사람의 기억 속에 있는 숫자들을 종합해,m명 이상이 기억하고 있는 숫자의 개수를 세는 문제다. 처음에는 딕셔너리를 이용해 풀었으나 시간 초과가 발생했고, 이후 list와 set 조합으로 해결했다.오답코드n,m = map(int, input().split(' '))dic = {}result = 0for i in range(n) : num = int(input()) li = input().split(' ') for j in range(num) : if li[j] in dic : dic[li[j]] += 1 else : dic[li[j]] = 1 for key, value in dic..
![[python] A, B = input().split()이 가능한 이유 (패킹,언패킹)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fc2gzYG%2FbtsMBWdbRrw%2FAAAAAAAAAAAAAAAAAAAAAOdPVJO3lLWaMur9ESoKZSJyr6c1Zdn6P2xb0m0I9SuP%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3D6BqpHgf4Q7ATLvSzKfY%252BUbBv9GQ%253D)
백준 문제를 풀다 보면 항상 이 코드를 쓰게 되는 것 같다.A, B = input().split() 처음에는 별 생각 없이 쓰다가, 어느 순간 "이거 왜 이렇게 쓰는 거지?"라는 궁금증이 들었다.그래서 해당 원리를 정리하고, 이 코드가 사용되는 이유를 설명해보려 한다. 가장 먼저 알아야 할 것은 패킹과 언패킹이다.1. 패킹과 언패킹이란?패킹(Packing)여러 개의 값을 하나의 변수에 묶는 과정이다. 주로 리스트, 튜플 등의 자료구조를 활용하여 여러 데이터를 하나의 단위로 저장한다.# 튜플 패킹packed_tuple = 1, 2, 3 print(packed_tuple) # 리스트 패킹packed_list = [4, 5, 6]print(packed_list)언패킹(Unpacking)패킹된 값을 개별 변수..
![[알고리즘] 파이썬 알고리즘 주의 사항](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb3lSJr%2FbtsMB15JQvr%2FAAAAAAAAAAAAAAAAAAAAAHeVNN2ktnn9M_XmcFcHT2x55x0ObHpPF6vtxsjzwd3e%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DZKuf3iRgcZFDidkS8zKS7dNe2iE%253D)
파이썬으로 알고리즘 문제 풀 때 주의 사항(잘몰랐던 개념 포함)*if True / False 간략히 쓰자 (생략하기)-if 함수()==True 는 잘 안쓰고 그냥 if 함수명()만 씀false일때 쓰고 싶으면? ) if not 함수명() 이런식으로 씀 *왼쪽에서 오른쪽으로 읽고 Ture/False 판단if A and B / A or B 라는 코드가 있으면 A먼저 판단 --> 그리고 B 판단그러니 런타임오류가 날 만한 함수를 넣을 거면 먼저 A에 판단식 B에 런타임 오류 날 수 있는 함수 넣기 *글로벌 키워드 / 인자로 넘기는 경우 주의인자로 넘기는 함수 형식이 현업에서 할 때, 코드 이해도가 좋기 때문 가급적 추천알고리즘 문제를 풀 때는 글로벌 키워드 사용함(현업에서 사용시 쓰레기 코드라고 불릴 수도..
![[파이썬] 리스트 원소 랜덤 출력하는 법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FboJT0n%2FbtsMAXb8HEN%2FAAAAAAAAAAAAAAAAAAAAAHrH1qIxvKQQjARpFNUZTjS9zvzxsijQYLR-tw0ZYrxr%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DLxAxhLi6dyJ%252BDYqVv93mba3du74%253D)
Q.리스트에 있는 원소 중 하나를 랜덤으로 출력하고 싶을때는 어떡해 해야 할까? *파이썬에서 랜덤과 관련된 메소드를 써주려면 import random을 해야 한다.리스트의 원소 중 하나를 아무거나 랜덤으로 선택하고 싶을때도 랜덤을 써야하니 필수다.A.이 때는 import random을 해준 뒤 random.choice(리스트명)을 해주면 끝이다!import randomlist = [1, 2, 3, 4]print(random.choice(list)) 이렇게 하면 원소 1,2,3,4중 하나가 임의로 선택되 출력된다.참고오 random.random() 함수를 쓰면 0부터 1사이의 임이의 실수가 나온다.
![[백준 -파이썬] 10171번 고양이 출력하시오 (\\를 조심하자)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdGORFX%2FbtrzuxqWIRI%2FAAAAAAAAAAAAAAAAAAAAAIAKweh8oliYluqQbFrw20bEp46hkaS9PxA-AWGz_R2E%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DbZVpjlom7pG0vtE629uqzoue6KM%253D)
백준 10171번 고양이를 출력하시오 문제 답: print("\\ /\\") print(" ) ( ')") print("( / )") print(" \\(__)|") 설명 : 계속해서 해도 안되서 속에 열불이 났었다. 그동안 틀렸던 이유는 바로 백슬레쉬 \를 출력하려면 \\로 두개를 써야 한다는 것을 잊고 있었기 때문이다.
헷갈리지 말것 C언어랑 자바가 기호 사용하고 파이썬은 그냥 문자 그대로 써주면 됨 뜻 C언어/자바 파이썬 그리고 && and 또는 || or 아니다(부정) ! not 그리고 bool형은 파이썬 시작할 때 꼭 대문자임 !!! C언어/자바 파이썬 true True false False
C나 자바, 파이썬 각 언어마다 사용 규칙이 다르지만 간단한 사칙연산에 사용하는 기호는 아래와 같이 동일하다. 의미 기호 더하기 + 빼기 - 곱하기 * 나누기 / 나눈 후 (몫은 버리고) 나머지만 % 그러나 파이썬이 C나 자바와 다른게 있다면 더 많은 연산기호를 사용한다는 점이다. (C나 자바에서 이 이외의 연산기호를 쓰고 싶을때는 함수를 사용해야 함) 파이썬에서 추가로 사용하는 연산기호는 아래와 같다. 의미 기호 제곱 ** 정수의 몫만 (소수점 이하의 몫은 버림) // 파이썬은 즉 7가지 연산기호를 사용