본문 바로가기

전체 글72

대소문자 변환 문제 문자열이 주어질 때, 대문자는 소문자로, 소문자는 대문자로 바꾸는 프로그램을 작성하시오. 알파벳이 아닌 문자는 그대로 유지한다. 입력 첫번째 줄에 문자열이 주어진다. (1 2022. 7. 15.
Iterator Pattern(이터레이터 패턴) Iterator Pattern이란? Iterator를 사용하여 collection의 요소들에 접근하는 디자인 패턴 순회할 수 있는 여러가지 자료형의 구조와는 상관없이 Iterator라는 하나의 인터페이스로 순회가 가능하다. 코드의 효율화, 숫자형 index가 아닌 string등 다양한 index를 기반으로 순회가 용이함 자바스크립트의 인터페이스 : for of collection : Container라고도 하며 동일한 요소들의 집합 ex) 배열, 트리 이터레이터 프로토콜 : iterable(반복 가능)한 객체들을 순회할 때 쓰이는 규칙 이터러블한 객체 : iterable(반복 가능)한 객체로 배열을 일반화한 객체 const mp = new Map() mp.set('a',1) mp.set('b',2) mp.. 2022. 7. 1.
[C++] cin, cout 사용 시 시간초과 문제 해결 방법 백준 문제를 풀다 보면 printf, scanf로 돌아가는 코드가 cin, cout를 쓰면 시간초과가 걸리는 경우가 있다. 여러 번 당해서 내용 찾아본 김에 간단히 적어본다. ios::sync_with_stdio(false); ios::sync_with_stdio는 cpp의 iostream을 c의 stdio와 동기화 시키는 역할을 한다. 이렇게 하면 iostream, stdio의 버퍼를 둘다 사용하여 딜레이가 발생한다. 옵션을 false로 설정해서 c의 stdio와 동기화를 해제하면 c++만의 독립적인 버퍼를 사용하여 실행속도가 더 빨라진다. cin.tie(NULL); 기본적으로 cin은 cout에 묶여 있어서 cin에서 입력 작업을 수행하기 전에 항상 flush가 호출되어 작업 부담이 크다. tie(N.. 2022. 7. 1.
[BOJ] 2504번 - 괄호의 값 괄호로 이루어진 문자열을 수식으로 나타내어 값을 출력하는 문제이다. 닫는 괄호는 해당 여는 괄호가 바로 앞에 나왔을 때만 값이 적용된다는 점을 유의해야 한다 - 예외처리 안해서 처음에 틀렸다 여는 괄호가 나왔을 때 1) '(' : 스택에 push하고 tmp 변수에 곱하기 2 2) '[' : 스택에 push하고 tmp 변수에 곱하기 3 닫는 괄호가 나왔을 때 1) 스택이 비어있는 지 확인 : 비어있으면 잘못된 문자열 : 0 출력 2) 스택의 탑이 해당 여는 괄호인지 확인 : 이전 문자열이 해당 여는 괄호인지 확인 : tmp값을 ans에 더해준다 : 스택에서 해당 여는 괄호 pop : tmp값 2 or 3으로 나눈다. 3) 그 외의 경우(해당 여는 괄호가 아닌 경우) : 잘못된 문자열 : 0 출력 마지막으로.. 2022. 6. 27.
COX ENDEAVOUR 키보드 키매핑 바꾸기 요약 정리 1. 다운받은 프로그램 실행한다. 2. 위에 있는 메뉴중에 불러오기부터 누른다(이거 안하면 키보드 먹통된다.) * 먹통 되었을 때 초기화 방법 : esc + 좌측 ctrl + 우측 ctrl + f12 네개 동시에 5초동안 누르기 3. 원하는 키매핑 설정한다. 4. 설정 적용 5. Fn + Pause 눌러서 키매핑 실행(Pause 키는 우측 최상단에 있음, 항상 켜둬야 한다, 누르면 하얀 불 들어온다) 상세 설명 엔데버 무접점 키보드를 샀는데 기존에 쓰던 볼륨 조절 키가 없다.. 구글링 해보니까 콕스에서 제공해주는 프로그램이 있다 해서 찾아보니 바로 다운받아서 실행하면 다음과 같이 화면이 나온다 여기서 가장 중요한 점!!!! 무조건 불러오기 누르고 시작해야 한다. 무조건. 이거 안하면 먹통된다... 2022. 6. 24.
DFS(깊이 우선탐색) 깊이 우선탐색이란? 그래프를 탐색할 때 쓰이는 알고리즘 특정한 노드에서 가장 멀리 있는 노드를 먼저 탐색하는 알고리즘 주어진 맵전체를 탐색하며 한번 방문한 노드는 다시 방문하지 않는다. // 수도코드 DFS(G, u) u.visited = true for each v ∈ G.Adj[u] if v.visited == false DFS(G,v) 어떠한 정점 u의 visited를 참으로 바꾸고 u로부터 연결되어 있는 v지점을 탐색한다. 방문되어 있지 않은 노드에 대해 재귀적으로 DFS를 호출. 1번 노드에서 시작하여 4번노드까지 가장 멀리 떨어져있는 정점까지 방문한 다음 그 다음 정점들을 차례로 방문한다. DFS 구현방법 - 1 void dfs(int here){ visited[here] = 1; for(in.. 2022. 6. 24.
[BOJ] 1205번 - 등수 구하기 점수 리스트 내에 입력값의 순위가 몇위인지 출력하는 문제이다. case를 나눠보면 1) 점수 리스트 크기보다 순위가 낮아서 랭크인 하지 못하는 경우 -1 출력 2) 동점자가 많아서 랭크인 하지 못하는 경우 -1 출력 3) 그외에는 입력값의 순위 정상 출력 다음과 같이 경우를 나누어 구현하면 된다. #include #include #include #include #include using namespace std; int N, score, P; int score_rank = 1, score_p = 1; int num[50]; int main() { cin >> N >> score >> P; for (int i = 0; i > num[i]; if (num[i] > score) .. 2022. 6. 23.
[BOJ] 1940번 - 주몽 입력값들 중 두개를 골라 합이 M이 되는 경우를 카운팅하는 문제이다. 이중 for문으로 전체의 경우를 따져보면 된다. #include #include #include #include using namespace std; int N, M; int input[15001]; int main() { int count = 0; cin >> N >> M; for (int i = 0; i > input[i]; } sort(input, input + N); for (int i = 0; i < N - 1; i++) { for (int j = i + 1; j < N;j++) { if (input[i] + input[j] == M) { count++; break; } else continue;.. 2022. 6. 21.
Dependency Injection(의존성 주입) 의존성 주입이란? 싱글톤 패턴은 사용하기 쉽고 실용적이지만 모듈간의 결합을 강하게 만들 수 있다는 단점이 존재 의존성 주입(DI, Dependency Injection)을 통해 모듈간의 결합을 조금 더 느슨하게 만들어 해결 가능 의존성이란? 종속성이라고도 하며 A가 B에 의존성이 있다는 것은 B의 변경 사항에 대해 A 또한 변해야 한다는 뜻 메인 모듈이 직접 다른 하위 모듈에 대한 의존성을 주는 것이 아닌 중간에 의존성 주입자가 이 부분을 가로채 메인 모듈이 간접적으로 의존성을 주입하는 방식 메인 모듈은 하위 모듈에 대한 의존성이 떨어지게 된다. 서비스를 사용하려는 수신객체(클라이언트)가 해당 서비스의 구성방법을 알 필요가 없게 하는 것 디커플링된다 라고도 표현함. 컴파일타임이 아닌 런 타임에 종속성을 .. 2022. 6. 21.