본문 바로가기

전체 글

(174)
Lec09. Lexer & Parser Generators - 10주차 2강 (전공/프로그래밍 언어 및 컴파일러) 2024. 12. 8. 23:10 11월 6일 - 10주차 2강* 개인 공부를 위해 정리한 것입니다. 정확한 내용은 꼭 본인이 공부하는 교재를 참고하시기 바랍니다. Goal: Useful Tools for Compiler ConstructionLexing and Parsing algorithmLexer: Thompson 알고리즘 및 Subset 구성Parser: top-down, bottom-up컴파일러 제작 도구lexer, parser 수동으로 안만들어도 됨. ocamllex, ocamlyacc로 자동화 가능ocamlyacc: LALR, OCaml용 parser 생성기(구문분석기)ocamllex: OCaml용 lexer 생성기(어휘분석기)Compiler Construction with ocamllex and ocamlyacc전반적으로 ..
[백준] 1522 문자열 교환 / 구현 / python 실1 (개발자 강화/코딩 테스트) 2024. 12. 4. 23:21 슬라이딩 윈도우 풍년이네https://www.acmicpc.net/problem/1522a랑 b 섞인 문자열이있고 문자 위치를 교환해서 a가 쭉 연속된 문자열로 만들기 위해필요한 최소 교환 횟수를 구해야 한다 문자열이 원형이라 처음과 끝이 이어져있다는게 관건 원형 처리를 원활하게 하기 위해 문자열을 두번 이어붙인다 처음 size만큼의 문자에서 b의 개수를 세어 초기 윈도우 값으로 사용한다 1부터 문자열 길이번째 원소까지 탐색한다슬라이딩하면서 윈도우의 왼쪽 문자를 제거하고, 오른쪽 문자를 추가하면서한 칸씩 이동한다이때 왼쪽 문자가 b였으면 b개수-1, 오른쪽 문자가 b였으면 b개수+1한다 이전 최소 값과 현재 값을 min으로 비교해서 업데이트한다 계속 윈도우를 이동시키면서 b의 개수가 최소로 포함되는 구간..
[백준] 1283 단축키지정 / 구현 / Python 실1 (개발자 강화/코딩 테스트) 2024. 12. 3. 16:28 https://www.acmicpc.net/problem/1283 뭔가 오랜만에 보는 코테같은 문제...진짜 구현 같은 문제? 각 줄마다 입력되는 단어를 공백으로 구분해서 배열로 추가한다그럼 이차원 배열 형태가 된다 이차원 배열을 탐색하면서i번째 원소를 k라고 둔다k 안에도 여러 개의 단어가 들어있으니 다시 for문을 돌린다 k 안에 있는 j번째 단어는 key라고 지정한다 일단 각 단어의 첫 글자가 단축키로 지정이 되어야 하기 때문에가장 먼저 key의 0번째 요소를 본다(* 모든 요소를 비교할 때는 lower case로 바꿔서 비교해야 대소문자 구분없음 조건을 잘 충족할 수 있다 0번째 요소가 아직 단축키에 없으면(save 배열에 없으면)save 배열에 key[0]요소를 추가한다그리고 해당 단어를 출력 ..