전체 글

Coding Test/문제 풀이

[Algorithm] 문자열 압축

코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 해결 과정 처음 풀었을 때는 한 시간 정도 걸렸는데, 기본 케이스에서 부터 틀렸음. 반례 계속 고치려다가 더 꼬이는 것 같아서 다음 날 새롭게 다시 시작함. (이 때는 테케 해결까지 50분 가량 소요) 어제 생각했던 IDEA 기반으로 이번에는 finalStr에 직접 문자를 추가하고 길이를 계산하는 식으로 변경. (문제에서 설명하는 그대로 코드에 구현) 이번에도 print문 찍어가면서 "aabbaccc" 해당 케이스가 제대로 나오는지 따져가며 풀었음. 마지..

Development/iOS

[iOS] Fundamental iOS Design Patterns - MVC (Model-View-Controller)

디자인 패턴이란? Software의 설계 방식이다. Software의 재사용성, 유지보수성을 높이기 위한 전략들이다. 디자인 패턴의 종류 Structural (구조): combining and composing objects ex) MVC(Model-View-Controller), MVVM(Model-View-ViewModel), Facade Behavioral (행위): communicating between objects ex) Delegation, Strategy, Observer Creational (생성): instantiating objects ex) Builder, Singleton, Prototype 각각의 종류를 외우는 데에 초점을 두지 말고, 어떤 패턴이 어떤 때에 활용하면 좋은지를 비..

Coding Test/문제 풀이

[Algorithm] 빗물 (백준 14719)

알고리즘 분류 구현, 시뮬레이션 해결 과정 역시나 '구현' 문제는 여러 IDEA 자체를 생각해볼 수 밖에 없는 듯 하다. IDEA 자체를 생각하기 어려웠음. IDEA만 찾아보고 코드로 구현했는데, 틀렸습니다. -> 나중에 알고보니 입력 받을 때 int가 아니라 string으로 입력받고 있어서 '100' < '99' 반례 케이스가 생겨버린 문제 ㅋ 아니 이건 진짜 IDEA를 찾는게 먼저인듯. 나의 코드 H, W = map(int, input().split()) heightList = list(map(int, input().split())) result = 0 for index, value in enumerate(heightList): if index == 0 or index == len(heightList..

Computer Science/Computer Architecture

[CS] Computer Architecture / 컴퓨터 구조

컴퓨터는 크게 두 가지로 구성된다. Hardware / 하드웨어 CPU(Central Processing Unit) / 중앙처리장치 Control Unit / 제어장치 ALU(Arithmetic Logic Unit) / 산술논리장치 Register / 레지스터 Memory / 기억장치 Main Memory / 주기억장치, 메인메모리 Secondary Memory(HardDisk) / 부기억장치, 하드디스크 Input/Output Devices / 입출력장치 Input Devices / 입력장치: 키보드, 마우스 등 Output Devices / 출력장치: 모니터, 프린터, 스피커 등 System Bus / 시스템 버스 (Hardware 구성 요소들을 물리적으로 연결하는 선) Control Bus / 제어..

Coding Test/문제 풀이

[Algorithm] 준비운동 PART 2. 약점 체크

더보기 준비운동 PART2. 약점 체크 문제풀이를 쭉쭉하기 전, 기본 알고리즘을 잘 습득했는지 점검할 수 있는 문제를 소개합니다. 뼈대 문제는 시간을 두고 반복 구현하여 손에 익혀서 응용문제가 나왔을 때 유연하게 대처할 수 있는 생각을 길러야 합니다. 재귀 탐색의 기본: 연산자 끼워넣기 (🥈실버 1티어) 스택의 응용: 괄호의 값 (🥈실버 2티어) 시뮬레이션 기본: 빗물 (🥇 골드 5티어) 완전탐색의 유연한 생각: 가르침 (🥇 골드 5티어) 그리디의 기본: 멀티탭 스케줄링 (🥇 골드 2티어) 투 포인터의 기본: 부분합 (🥇골드 4티어) 벨만포드 뼈대문제: 최소비용 구하기 (🥇 골드 5티어) Prime, Kruskal 뼈대문제: 최소 스패닝 트리 (🥇 골드 4티어) KMP 뼈대문제: 부분 문자열 (🥇 골드 ..

EUNJI HA
Day by Day