전체 글115 [프로그래밍언어] Ch4 Lexical and Syntax Analysis Lexical Analysis와 Syntax Analysis를 구분하는 이유 • 단순성 - 덜 복잡한 접근 방식을 어휘 분석에 사용할 수 있다. 이를 분리하면 파서가 단순해진다. • 효율성 - 분리를 통해 어휘 분석기를 최적화할 수 있다. • 이식성 - 어휘 분석기의 일부는 다른 언어로 이식이 불가능할 수 있지만 파서는 항상 이식이 가능하다. Lexical Analysis 어휘 분석이란 소스 프로그램을 읽어 들여 token이라는 의미 있는 문법 단위(문법에서 터미널 심볼에 해당함)로 분리하는 것을 말한다. 즉, 보통 구문을 분석하면서 다음 토큰이 필요할 때마다 어휘 분석기를 호출하는 것이다. 이렇게 구분된 token들에 에러가 있는지 검사하고 또한 문자열에서 공백을 제거하기도 한다. Syntax anal.. 2024. 4. 13. [프로그래밍언어] Ch3 Describing Syntax and Semantics 개념 정리 Syntax: 컴퓨터 언어의 문법 또는 구조 Semantics: 그 문장의 의미 Context-Free Grammars: 문맥에 상관없이 어떤 Non-Terminal이 들어와도 그에 대한 production-rule이 존재하는 문법 Terminal Nonterminal 시작 심볼 S 문법 규칙들의 집합 BNF: 프로그래밍언어의 문법을 만들어놓은 규칙 Derivation: Nonterminal들을 적절한 production-rule을 사용하여 다른 표현으로 치환하는 것 위의 과정을 Nonterminal 심볼이 없을 떄까지 반복 생성 규칙 X -> Y1, Y2, ... Yn 적용 1. 좌측 유도(leftmost derivation) : 각 직접 유도 단계에서 가장 왼쪽 nonterminal을 선택.. 2024. 4. 13. [BOJ/1929/C++] 소수 구하기 소수 구하는 문제라 쉬울 거라고 생각하고 자신있게 문제를 풀었다..그래서 아래와 같이 구했고, 답도 제대로 나왔다.#include#includeusing namespace std;int main(void){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int M, N; vector vector; cin >> M >> N; for (int i = M; i 그러나 오늘도 어김없이 나오는 시간초과,, 그래서 찾아보니 에라토스테네스의 체 라는 방법이 있었다.이게 뭐냐하면 2 이상의 구하고자 하는 범위 내에 존재하는 자연수를 모두 나열한 뒤, 2 이상 배수들을 차례로 지워나가는 방법이라고 한다! 에라토스테네스의 체의 시간복잡도는 O(N log(log N))으.. 2024. 2. 4. [BOJ/9205/C++] 맥주 마시면서 걸어가기 오랜만에 골드 문제를 풀어보았다.그만큼 시간 소요도 오래 되었고 BFS를 이용해서 푸는 것은 알았지만, 적절하게 활용하는 것이 어려웠다. 거의 다 왔다고 생각하며 풀어보려고 했지만 계속 나는 런타임 에러,,코드 자체에 문제가 있었다기 보다 코드의 흐름이 맞지 않았던 것 같다. 그래서 처음부터 다시 문제를 풀었다.우선 이 문제에서 구조체를 사용했다. 내가 Java로 코테를 준비할 때도 BFS 문제는 생성자를 이용해서 풀었다.C++도 이런 성질을 이용해서 푸는 것이 용이했다. main() 함수를 먼저 작성했기 때문에 main() 함수 먼저 살펴보자int main() { ios_base::sync_with_stdio(0); cout.tie(0); cin.tie(0); int t; cin.. 2024. 2. 1. [TECHNOLOGY] Technology for Pets, Pet-tech Technology for Pets, Pet-tech - The Soongsil Times(숭실대영자신문) Do you live with your pet at home? You may know that a companion animal like a ‘dog’ is loyal to its guardian and follows people very well. However, why does a ‘dog’ do that? Have you ever thou... www.sstimes.net The Soongsil Times 192호 [TECHNOLOGY] 본문 내용 요약 및 해석 펫테크란? 펫테크는 반려동물과 기술을 합성한 신조어로, 반려동물을 안전하고 편리하게 돌보는 데 필요한 제품과 서비스에 사물인터넷, 인.. 2024. 1. 31. [테크 커리어] 우리는 모두 기여할 수 있다 영향력 있는 개발자로서 성장하고 싶어 개발 관련 도서를 찾다가 를 발견했다.이 책의 주 타켓층은 이제 막 개발자가 된 신입 개발자이다. 나는 아직 개발자라고 칭하기에는 많이 부족하지만 먼저 성공한 이들의 이야기를 미리 엿볼 수 있다면 좋은 경험이 될 것 같아 읽게 되었다. 내가 생각하는 성공은 간단하다. 내가 원하는 인생을 사는 데 필요한 모든 것을 가리킨다. (29p) 성공하고 싶었다. 그래서 성공하기 위해 열심히 달려왔었다. 그러나 나는 정작 성공이란 무엇인지 제대로 생각해보지 못했던 것 같다. 저자는 말한다. 성공이란 자신이 원하는 인생을 사는 것이라고 말이다. 내가 꿈꾸고 정의한 삶을 살기. 성공이란 생각보다 간단하다. 나만의 인생 정의를 적어나가며 우리가 원하는 인생을 실천해나가자. 소신 있게.. 2024. 1. 30. [COVER STORY] ChatGPT: Chance? Or Threat? ChatGPT: Chance? Or Threat? - The Soongsil Times(숭실대영자신문) ChatGPT (Generated Pre-trained Transformer) became a hot topic around the world as soon as it emerged. More and more people are curious about ChatGPT, and more and more people are using it. ST once... www.sstimes.net The Soongsil Times 194호 [COVER STORY] 본문 내용 요약 및 해석 Chat GPT란? Open AI가 2022년 공개한 대화 전문 인공지능 챗봇으로, 대규모 인공지능 모델이다. 사용자가 대화창에.. 2024. 1. 30. [TECHNOLOGY] CES 2023 IT Technology Trends CES 2023 IT Technology Trends - The Soongsil Times(숭실대영자신문) As technology improves over time, Soongsilians are naturally interested in its developments. Do you know the program that features the developments in technology and the year’s trends in IT(Inform... www.sstimes.net The Soongsil Times 193호 [TECHNOLOGY] 본문 내용 요약 및 해석 CES란? 매년 1월마다 라스베가스에서 열리는 세계 최대의 전자제품 박람회이다. 이 박람회에서는 각국의 기술 리더들이 소비자 제.. 2024. 1. 30. [BOJ/1181/C++] 단어 정렬 이 문제가 비교적 쉬울지라도 나는 문자열이 나오는 문제를 어려워했기 때문에 이번에는 기록해두고 싶어서 적어본다. 우선 문자열을 입력받고 그것을 길이 순으로 지정하는 방법에 대해 고민해보았다.이때 유용하게 사용할 수 있는 방법이 있는데, C++의 헤더에서 제공해주는 sort() 함수이다. sort() 함수는 정렬할 범위를 알고, 그 범위 내의 각 요소 쌍에 대한 함수를 호출할 수있다. 즉, 아래의 코드에서 보았을 때 str[] 배열에 있는 각 요소에 대해 compare() 함수의 입력으로 사용하고 있는 것을 알 수 있다.이 비교 결과에 따라 요소의 위치를 재배치한다.#include#include#define MAX 20000using namespace std;bool compare(string x, st.. 2024. 1. 26. [Android] Nullable, NonNull, Kotlin scope function [Android] Nullable, NonNull, Kotlin scope function 안드로이드 발표🤖 velog.io Null Kotlin의 특징 중 '안전한 코드를 작성할 수 있다'가 있다. 안전한 코드를 지원하는 이유는 코틀린이 널 안전성을 지원하는 언어이기 때문이다. 널 허용과 널 불혀용을 구분해서 선언할 수 있다는 것이 특징이다. 그렇다면 Null이란 무엇일까?🤔 🚨객체가 선언되었지만 초기화되지 않은 상태이다. 객체는 주소가 저장되며 이 주소로 메모리에 접근해서 데이터를 이용한다 null은 객체가 주소를 가지지 못한 상태로 null인 상태의 객체를 이용하면 널 포인트 예외(NullPointException) 발생시킨다. ➕이해하기 쉽게 수학의 집합 개념으로 비유해보자면 0은 0만을 원소로 .. 2024. 1. 23. [Android] 아키텍처 패턴 [Android] 아키텍처 패턴 아키텍처 패턴 뿌시기! velog.io MVC Model(모델): 데이터 로직을 처리하는 부분 View(뷰): 사용자에게 보이는 UI 부분 Controller(컨트롤러): 사용자의 입력을 받고 처리하는 부분 MVC는 가장 기본적인 패턴이라고 할 수 있다. 사용자의 액션을 Controller로 받고 Model을 업데이트 한다. Controller는 Model을 나타낼 View를 선택하고 View는 이를 이용해 화면에 나타낸다. 그럼 이를 코드로 알아보자!😆 비밀번호 4개를 입력했을 때 언락(unlock)이 됐다는 텍스트를 표시하는 예시이다. 여기서 MainActivity가 Controller의 역할을 한다. MainActivity.kt 파일입니다. // Controller .. 2024. 1. 23. [Android] 코루틴과 Channel [Android] 코루틴과 Channel Channel 개념 알아가기 velog.io 코루틴 지난 코루틴에 대한 설명 👉 https://comyou.tistory.com/58에 이어 코루틴이 코드 속에서 어떻게 쓰이는지 추가 설명을 해보겠다! IntelliJ에서도 코루틴에 진입할 수 있다. 아래 보이는 runBlocking은 CoroutineScope이기 때문에 launch를 실행할때 GlobalScope가 필요없다. import kotlinx.coroutines.* fun main() { runBlocking { launch { delay(2000) println("Hello") } launch { delay(1000) println("World!") } } } 이렇게 코드를 짜면 출력값은 World!.. 2024. 1. 23. 이전 1 ··· 3 4 5 6 7 8 9 10 다음