전체 글 (170) 썸네일형 리스트형 [프로그래머스] 타겟넘버 - BFS/DFS 2024. 10. 24. 23:35 알고리즘 고득점 키트 BFS/DFS lv2 타겟넘버 숫자 배열이 주어지고, 목표 값이 있음각 숫자를 더하거나 빼서 목표 값을 만들고, 총 목표 값을 몇 가지로 만들 수 있는지 return하면 됨 혼자 못풀었음풀이 참고함 BFS 풀이 모든 연산을 저장하는 leaves 배열이 존재for문을 돌며 각 숫자를 탐색 leaves 안에 있는 모든 숫자들에 대해서, 현재 숫자를 더하거나 뺀 값을 임시 배열에 저장함 leaves 배열 값을 임시 배열값으로 치환함 #어차피 숫자 순서를 바꾸거나 하는 일은 없으니까 #순서대로 각 숫자를 더하거나 뺐을 때 경우를 다 저장해서 나중에 target 값인지만 확인하면 됨 for문 돌며 leaves안에 있는 값 살펴봄. target값이면 answer +1 def .. Lec06. Syntax Analysis(2) - 7주차 1강/2강 2024. 10. 24. 14:03 10월 14일 7주차 1강 + 10월 16일 7주차 2강* 개인 공부용으로 정리했습니다! 정확한 내용은 본인이 공부하는 자료를 참고해주세요. 오늘의 대주제: Top-Down Parsing 1. Top-Down ParsingTop-Down Parsing의 정의주어진 입력 문자열에 대해 parse tree를 구축하는 과정parse tree의 root에서 시작해서 tree를 preorder로 순회(root-왼-오)하며 input 문자열과 일치하는 leaf까지 진행input 문자열에 대한 leftmost derivation을 찾는 과정과 동일하게 볼 수 있음모든 문법이 top-down parsing 알고리즘으로 분석될 수 있는 건 아님분석할 수 있게 grammar를 재작성해야 함Eliminating Ambig.. [프로그래머스] 조이스틱 - Greedy 2024. 10. 23. 22:59 프로그래머스 고득점키트 그리디 조이스틱 레벨2 완성해야 하는 문자열이 주어지고, 맨 처음에는 문자열의 길이만큼 A가 존재함상하로 움직이면 현재 알파벳의 이전 또는 이후 알파벳이 나옴, 좌우로 움직이면 각 문자 사이 커서 이동일단 상하로 움직여서 알파벳을 바꾸는 건 간단함파이썬 같은 경우에는 ord(알파벳)하면 아스키값을 알 수 있음그래서 ord('A') 또는 ord('Z')값과 각 문자열의 값을 뺄셈해서 절대값을 구하고, 둘 중 작은 값을 고름대신 주의해야될 것은 기본 값이 A이기 때문에 Z에서 시작하려면 A->Z로 변환하는 단계가 필요해서 1 더함그래서 A에서 아래로 움직여서 해당 알파벳으로 가는게 나은지?아니면 A에서 위로 움직여서 Z로 바꾼 후, 계속 위로 움직여서 해당 알파벳으로 가는게 나은지?그.. [프로그래머스] 구명보트-Greedy 2024. 10. 23. 21:44 프로그래머스 고득점키트 Greedy lv1 구명보트 구명보트는 2명씩만 탈 수 있고, limit을 넘어서는 안됨처음에는 그냥 sort한 배열을 이용해서 마지막에서 2개씩 끊어서 쓰려고 했음마지막에서 2개 끊어서 limit보다 작으면 둘 다 보내고, limit보다 크면 1명 보내고근데 테케, 효율성 50%만 통과함이건 투포인터라는 기법을 써야 됨. 두 개의 값을 저장해서 계속 업데이트가장 작은 값+가장 큰 값을 매칭해서 태워보내는 방식left=0(가장 작은 값), right = len(people)-1 (가장 큰 값)left만약 가장 작은 값+가장 큰 값이 limit 이하이면 태울 수 있음그럼 작은 값을 1 증가시킴만약 태울 수 없으면 if문 밖으로 빠져 나오는데, 무거운 사람만 태워보냄(작은값 그대로)누.. Lec05. Syntax Analysis (1) - 6주차 1강 2024. 10. 23. 15:18 10월 7일 6주차 1강* 개인 공부용으로 정리한 것입니다. 정확한 내용은 본인의 교재를 꼭 확인하시기 바랍니다. 1. Roadmap for Building a ParserParser는 Token Stream을 입력받아 Syntax Analyzer로 Syntax Tree를 출력한다Specification: 문법을 어떻게 표현할 것인가? (1+3)은 올바르지만 (1+3는 오류를 발생한다문법을 정의하기 위해 CFG를 사용한다Parsing: 구문 분석: 주어진 토큰 시퀀스 s에서 s∈L(CFG)인지 확인하고, Syntax tree 생성하는 법Top-down, Bottom-up 구문 분석 알고리즘 사용2. Context-Free GrammerV: 유한한 variable의 집합. non terminal symbo.. Lec-OCaml. Functional Programming in OCaml (4주차 2강, 5주차 1/2강) 2024. 10. 23. 14:17 9월 25일 4주차 2강 + 9월 30일 5주차 1강 + 10월 2일 5주차 2강 * 본 글은 개인 공부용으로 정리한 것 입니다. 정확한 내용은 본인이 공부하는 자료를 참고하시길 바랍니다!! OCaml이 진짜 문대...그게문데문대...나는 high level만 먹는다고... 1. Introduction1.1. Functional Programming?함수: first-class변수에 저장된다다른 함수의 인자로 전달될 수 있다다른 함수의 반환값으로 사용할 수 있다expression-oriented: 계산 과정이 값을 변형하지 않고 표현식으로 기술된다...(아래 참고)imperative version: 명령형 방식, int factorial(int n)에서 r을 계속 갱신하면서 계산functional ver.. Lec04. Lexical Analysis (3) (2주차 2강, 4주차 1강/2강) 2024. 10. 20. 16:14 수업: 9월 11일 2주차 2강 + 9월 23일 4주차 1강 + 9월 25일 4주차 2강 (3주차 1강, 2강은 추석으로 휴강)* 본 자료는 제 개인 공부용으로 정리한 것입니다. 정확한 자료는 꼭 본인이 공부하는 교재를 참고하시길 바랍니다. 9월 11일 2주차 2강1. Construction of DFAMethodology: lexical specification을 동일한 string recognizer로 변환한다Regular Expression, 정규 표현식: 특정 패턴의 문자열을 정의Lexical Specification: 특정 언어에서 허용되는 문자 패턴을 정의String Recognizer: 입력된 문자열이 주어진 규칙(RE)과 일치하는지 판별DFA: state와 transition을 사용해 문자.. Lec03. Lexical Analysis(2) (2주차 1강) 2024. 9. 25. 23:37 2주차 1강 - 9월 9일 월요일, Lexical Analysis 1. String Recognition using Finite AutomataFinite Automata정의: yes or no를 return하는 string recognizer이 string에 accept 가능한가? 아닌가?를 판별한다.종류Non-deterministic Finite Automata(NFA)Deterministic Finite Automata(DFA) 2. Possibility of Correct String Recognition문자열 s, 패턴 R문자열 s가 어떤 Finite Automata에 속하는지 확인하고 싶다.즉, s가 L(R)에 존재하는지 확인하고자 한다.패턴 R을 인식하는 Finite Automata를 찾고,.. 이전 1 ··· 17 18 19 20 21 22 다음