본문 바로가기

전체 글

(61)
[프로그래머스] 보석 쇼핑 (2020 카카오 인턴십) 문제 링크 : programmers.co.kr/learn/courses/30/lessons/67258 이번 문제는 투포인터 문제다. 그냥 단순하게 모든 경우의 수 확인한다면 O(n^2)이 나올것이다. 하지만 투포인터를 이용하면 O(n)으로 해결할 수 있다. 1. 보석을 set에 넣어서 보석 종류의 개수를 확인한다. 2. 투포인터(start , end)를 이용하여 증가시키며 확인한다. 2-1 투포인터 범위안에 보석종류가 포함안된게 있거나 start==end라면 end증가시켜 범위 늘리기 2-2 투포인터 범위안에 보석종류가 전부 포함되면 start 증가시키며 범위 축소해보기 3. 확인한 범위 중 최소의 범위 반환 #include #include #include #include #include using na..
행동 패턴(Behavioral patterns) Strategy(스트레티지) 패턴 Strategy(스트레티지) : ex - interface를 상속받은 클래스들에서 각각 다르게 overriding하여, 같은 interface의 메소드를 호출해도 객체마다 다르게 동작 State (스테이트) 패턴 State (스테이트): Strategy와 비슷하지만 아래와 같이 다름 -Strategy 패턴이 지정된 특정 메소드가 모듈화된 모드에 따라 다르게 실행되도록 하는 거라면 State 패턴은 그 메소드가 실행될 때 모드도 전환되는 것 -TV가 꺼져 있을 대 누르면 켜지고, 켜져있을 때 누르면 꺼지는 방식 Command 패턴 command 패턴 : Strategy와 역시 비슷하지만 아래와 같이 다름 - Strategy는 같은 일을 하되 그 알고리즘이나 방식이 갈아끼워..
[프로그래머스] 방문 길이 (Summer/Winter Coding(~2018)) 문제 링크 : programmers.co.kr/learn/courses/30/lessons/49994?language=cpp 1. 입력으로 들어온 방향으로 움직인다. 2. 움직일 때 지나간 길을 체크해 둔다. - 나는 해당 좌표에서 4방향의 길로 분류하여 체크를 하였다. (현재 좌표에서 지나가야하는 방향 체크, 다음 좌표에서 지나온 방향 체크) 3. 처음 지나가는 길만 answer++해준다. #include #include using namespace std; bool check[15][15][4]; int dir[4][2] = { {-1,0},{0,1},{1,0},{0,-1} }; int x = 5; int y=5; int answer = 0; void moving(char c) { int d = 0;..