IoC(Inversion of Control) 번역하면 제어의 역전이다. 이게 무슨말일까 설명을 들으면 이해가 된다. 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체들을 생성하고, 연결하고 실행했다. 예를들면 운전자가 차를 고를 수 있는 상황을 생각해보자 Interface Car 1 2 3 public interface Car...
백준 11070 피타고라스 기댓값 c++
문제 https://www.acmicpc.net/problem/11070 문제해설 2팀이 주어지고 각각 득점한 수가 주어진다. 득점과 실점을 구하여 계산식에 맞게 기댓값을 구한 후 팀 중의 최대와 최소 기댓값을 구하면 된다. 문제풀이 간단해보이는 문제인데 참 많이 틀렸다. 결국 틀린 이유는 마지막 개행문자를 안넣어서 그랬다…. 문제를 틀릴만한 ...
백준 18512 점프 점프 c++
문제 https://www.acmicpc.net/problem/18512 문제해설 두 명의 학생이 각각 p1, p2에서 출발해서 x와 y만큼 점프를 한다. 시작지점에서 가장 가까운 두 학생이 만나는 점을 구하면 된다. 문제풀이 두 명을 각각 x와 y만큼 증가시키며 동일한 지점에서 만날 수 있는지 확인해준다. 100만큼 돌리며 그 안에 안나오면...
백준 1027 고층 건물 c++
문제 https://www.acmicpc.net/problem/1027 문제해설 높이가 다른 건물들의 높이 n개가 주어진다. 옥상에서 다른 건물들이 가장 많이 보이는 빌딩의 번호를 출력하면 된다. 문제풀이 이 문제는 기울기를 이용해 풀었다. 2중 반복문을 돌며 현재 건물 기준으로 다른 건물들의 기울기를 전부 계산해준다. 기울기가 계산해둔 최대값...
백준 3213 피자 c++
문제 https://www.acmicpc.net/problem/3213 문제해설 N명의 친구들이 피자를 먹는다. 친구들은 1/4, 1/2, 3/4 판을 먹을 수 있다. 다만 1/2을 먹는 친구 2명이서 한판을 나눠 먹을 수는 있지만 3/4를 먹는 2명과 1/2을 먹는 1명이 2판을 먹을 수는 없다. 1/2를 먹는 친구가 1/4와 1/4로 나눠서 먹...
객체지향 설계의 5원칙 SOLID
SOLID 단일 책임 원칙(single responsibility principle) 개방-폐쇄 원칙 (Open/closed principle) 리스코프 치환 원칙 (Liskov substitution principle) 인터페이스 분리 원칙 (Interface segregation principle) 의존관계 역전 원칙 (Dep...
백준 1684 같은 나머지 c++
문제 https://www.acmicpc.net/problem/1684 문제해설 n개의 정수로 된 수열이 존재한다. 모든 수를 같은 수 D로 나누었을 때 모든 수의 나머지가 같아지는 D가 존재한다. 이 D는 여러개 존재할 수 있으며 가장 큰 D를 구하면 된다. 문제풀이 어떤 수 x1이 존재하고 이 수를 D로 나눴을 때의 몫을 p1 나머지를 q라...
백준 17520 Balanced String c++
문제 https://www.acmicpc.net/problem/17520 문제해설 n이 주어지면 길이가 n인 이진수들 중에 0과 1의 개수 차이가 1이하인 수의 개수를 출력해주면 된다. 문제풀이 직접 1부터 해보다보면 규칙성을 발견할 수 있다. 짝수에서 홀수로 증가할 때는 경우의 수가 2배로 커지고 홀수에서 짝수로 증가할 때는 경우의 수가 그대...
백준 6146 신아를 만나러 c++
문제 https://www.acmicpc.net/problem/6146 문제해설 (0, 0)에서 출발하여 (x, y)에 도달할 수 있는 최단경로를 구한다. 다만 중간중간 물 웅덩이가 있는데 웅덩이는 피해야한다. 문제풀이 어렵지않은 bfs문제이다. 다만 입력되는 범위가 -500~500 이기때문에 입력받는 값에 전부 500을 더해서 1000X100...
백준 19637 IF문 좀 대신 써줘 c++
문제 https://www.acmicpc.net/problem/19637 문제해설 전투력 기준 m개와 전투력 n개가 주어지면 순서대로 기준에 맞는 칭호를 붙여주면 된다. 문제풀이 굉장히 간단해보이는 문제다. 하지만 m개를 다 탐색하는 O(mn)으로 푼다면 시간초과가 발생한다. 그렇기때문에 탐색하는데 log의 시간이 걸리는 방법을 사용해야 한다....