목록전체 글 (97)
데이터 코딩랩

1️⃣ **상태(State)**를 명확히 정리해라💡문제에서 변하는 값은 무엇인가?예- 로봇 청소기 : 위치, 방향, 청소 여부- 구슬 탈출 : 빨간 구슬 위치, 파란 구슬 위치- 시계 시뮬레이션 : 시각(초,분), 타이머 위치 → 상태는 반드시 변수로 추적되어야 해! 2️⃣ 입력 & 초기화 깔끔하게 하기 - 입력받는 자료구조는 list, 2차원 배열, dict 중 어떤게 좋은가?- 초기 위치/값/방향을 확실히 변수에 저장! x, y = 시작점direction = 0 # 0: 북, 1: 동, ...board = []for _ in range(N): row = list(map(int, input().split())) board.append(row) 3️⃣ 조건을 종이에 써서 시나리오화 해라..

1️⃣ 개념정리시뮬레이션 : 문제에 주어진 조건을 그대로 코드로 구현하는 방식핵심 : 직접 움직임/상태 변화/조건처리를 구현해야 함예시 : 로봇 움직이기, 지도에서 이동, 조건에 따른 상태 변화 등 2️⃣ 자주 나오는 유형 이동 , 시간 흐름, 상태변화 이벤트 처리 1) 이동 유형의 예시 문제 : 로봇청소기 , 게임 캐릭터→ 상하좌우, 방향, 좌표 이동 2) 시간 흐름 예시 문제 : 타이머, 시계, 대기열 시뮬레이션→ 초 단위 흐름, while 문 3) 상태 변화 예시 문제 : 배열 조작, 구슬 굴리기→ 조건에 따라 값 변경 4) 이벤트 처리 예시 문제 : 큐/덱과 결합→ 터뜨림, 이동, 합치기 3️⃣핵심 기술(꼭 알아야 함!)1) 2차원 배열 : 격자판에서 상태 추적예_ board[x][y..

https://www.acmicpc.net/problem/11047 📄 실전 문제 접근 체크리스트1초, 256MB 1단계: 문제 파악■ 문제 요구사항 한 줄로 정리 : 가지고 있는 동전의 종류 :N , 합 K , 필요한 동전의 최솟값 구하기 ■ 예제 입력/출력 확인: 입력 → 첫 째줄 : 동전의 종류 (1(1: 출력 → 한명씩 출력 ★ 내가 놓친 부분 2단계: 입력 범위 → 시간복잡도 판단입력 크기 (N) 적정 알고리즘 복잡도 ■ 입력 크기 체크 후 -> 내가 쓸 수 있는 알고리즘 선별: 주어질 숫자 N (N : 정렬 알고리즘 O(N log N) , : N은 최대 100,000 ★ 내가 놓친 부분 3단계: 알고리즘 유형 선택■ 그리드 ★ 내가 놓친 부분 동전 리스트..

그리디 ✅ 기본 개념 "지금 이 순간 가장 최선의 선택을 한다"→ 그 선택이 결국 전체 문제를 푸는 데도 최선이 될 거라고 믿는 방식 ✅ 이름의 뜻부터!greedy = "탐욕스러운"말 그대로 **"지금 당장 제일 좋아 보이는 걸 욕심내서 선택"**하는 방식! ✅ 핵심 특징✅ 그리디가 맞는 문제 vs 틀리는문제 💡 한 줄 요약그리디 알고리즘은 "지금 가장 좋아 보이는 선택"을 반복해 정답을 찾는 방식이며,그 선택이 전체 최적이 되도록 문제 구조가 뒷받침될 때만 성공한다! ✅ 코테 대비 요약 ✅ 자주 쓰는 패턴 ✅ 실전 팁 & 실수 주의 ✅ 그리디 실습 추천 문제 (실전용) 공부 포인트 중요도 ..

https://www.acmicpc.net/problem/10825 📄 실전 문제 접근 체크리스트1초, 256MB 1단계: 문제 파악■ 문제 요구사항 한 줄로 정리 : N명, 이름 국어 영어 수학 점수, ■ 예제 입력/출력 확인: 입력 → 첫 째줄 : 학생 수 N (N 이름: 출력 → 한명씩 출력 ★ 내가 놓친 부분 입력 직후 정수형 변환 필요 → int(kor), int(eng), int(math)(이 부분이 어려웠음) 2단계: 입력 범위 → 시간복잡도 판단입력 크기 (N) 적정 알고리즘 복잡도 ■ 입력 크기 체크 후 -> 내가 쓸 수 있는 알고리즘 선별: 주어질 숫자 N (N : 정렬 알고리즘 O(N log N) : N은 최대 100,000 ★ 내가 놓친 부분 3단..

궁금증이 생김 import sysinput = sys.stdin.readline#이걸로 input 받을때 #input().strip() 으로 개행을 없애주잖아 그런데 만약 #input().split() 조건도 넣고싶으면 strip 을 어디에 쓰는지 ✅ 결론input().strip().split()→ 개행문자 제거 후, 공백 기준으로 나누기→ 순서 중요: strip 먼저, split 나중! ✅ 정리

갑자기 궁금증이 생김A=['e','L','a','b','C','c','l']A.sort()print(A) sort() 취하고 나서 다시 A = A.sort() 는 할 필요가 없는가? 🔍 비교: list.sort() vs sorted() 📌 예시 1: A.sort() 사용A = ['e','L','a','b','C','c','l']A.sort()print(A)# ✅ ['C', 'L', 'a', 'b', 'c', 'e', 'l'] ← 알파벳 순 정렬됨 ❌ 예시 2: A = A.sort()A = ['e','L','a','b','C','c','l']A = A.sort() # A에는 None이 들어감!print(A)# 🔴 출력: None ✅ 예시 3: sorted() 사용A = ['e','L','a'..

https://www.acmicpc.net/problem/1181 📄 실전 문제 접근 체크리스트3초, 256MB 1단계: 문제 파악■ 문제 요구사항 한 줄로 정리 : 알파벳 소문자 N 개 정렬하기, 1. 길이가 짧은 것부터, 2. 길이가 같으면 사전 순 , 단 중복된 단어는 하나만 남기고 제외 ■ 예제 입력/출력 확인: 입력 → 첫 째줄 : 단어 개수 N (N : 출력 → 한단어씩 출력 ★ 내가 놓친 부분사전 순 정렬은 문자열 비교 자체로 가능하다는 점→ sorted() 기본값이 사전 순 정렬!중복 제거는 반드시 정렬 전에 해야 한다는 점→ set()으로 중복 제거 → 다시 list()로 정렬 2단계: 입력 범위 → 시간복잡도 판단입력 크기..