분류 전체보기
-
객체지향의 사실과 오해 1장 리뷰 - OOP의 핵심Etc 2021. 8. 21. 14:46
몇달전에 산 책 객체지향의 사실과 오해를 다시 읽으려고 한다 자바를 공부하고 스프링부트를 사용하고 백엔드 개발자를 지망하는 백수로서 객체지향에 대한 깊은 이해가 필요하다고 느꼈다 1장 - 협력하는 객체들의 공동체 객체지향을 흔하게 비유하는 문장 "객체지향 프로그래밍은 실세계의 사물을 모방하여 소프트웨어로 옮기는 작업이며, 그 속에서 객체는 실세계에 존재하는 사물의 추상화이다."은 올바르지 않다. 하지만 현실 세계에 대한 비유는 [캡슐화], [모방성], [메시지], [협력], [연결완전성] 등의 객체지향 핵심 개념들을 이해하는 데에 용이하다. 사실 객체지향의 목표는 실세계를 모방하는 것이 아닌 고객과 사용자를 만족시킬 수 있는 새로운 세계를 창조하는 것에 있다. 객체지향의 가장 중요한 개념 세 가지는 [역..
-
[BOJ]4358번: 생태학(C++)Problem Solving/BOJ(백준) 2021. 8. 20. 00:59
https://www.acmicpc.net/problem/4358 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 토스 코테에서 활용해야 했다고 했던 sorted map을 유의하고 푼 문제 string으로 문자열을 입력받아서 map에 저장한 뒤 각각의 비율을 출력해주는 간단한 문제엿다 파이썬으로 풀고싶었는데 개수 제한 없이 입력받는 법을 아직 모르겠다 ㅠ #include #include #include using namespace std; map m; int main() { char str[35];..
-
[BOJ]백준 2917번: 늑대 사냥꾼(C++)/DijkstraProblem Solving/BOJ(백준) 2021. 8. 16. 02:52
https://www.acmicpc.net/problem/2917 2917번: 늑대 사냥꾼 첫째 줄에 N과 M (1 ≤ N, M ≤ 500)이 주어진다. 둘째 줄부터 N개 줄에는 숲의 지도가 주어진다. 지도에 'V'와 'J'는 딱 하나만 있고, 적어도 하나의 '+'가 있다. www.acmicpc.net 다익스트라를 이용해서 풀었지만 거리의 누적 합의 최소를 찾는 것이 아닌 경로 중 최소값 만을 요구하는 문제였다 그래서 맨 처음 입력을 받은 뒤 모든 나무의 좌표를 큐에 넣은 뒤 BFS를 수행하여 모든 정점으로부터 나무까지의 거리를 구했고 다익스트라를 수행하면서 선택할 수 있는 다음 좌표 중 (나무와의 거리)가 가장 큰 좌표를 선택하게 했다 시간초과가 엄청 많이 났는데 .. 그 이유는 무식하게 모든 나무 좌..
-
Overriding(오버라이딩)과 Overloading(오버로딩)Programming 2021. 8. 16. 01:13
오버라이딩과 오버로딩은 한글로 보면 더더욱 헷갈리는 객체지향 프로그래밍의 메소드 정의 방식이다 (Method) Overriding : 자식(서브) 클래스가 부모(슈퍼) 클래스에 정의된 메소드를 재정의 할 수 있는 기능. 부모 클래스에 정의되어 있는 메소드와 정확히 같은 이름, 같은 반환형, 같은 파라미터를 가져야 한다 Java에서는 @Override 메소드를 이용하여 오버라이딩을 할 수 있다 class Thought { public void message() { System.out.println("I feel like I am diagonally parked in a parallel universe."); } } public class Advice extends Thought { @Override // ..
-
[BOJ]백준 22234번: 가희와 은행(C++)/Priority QueueProblem Solving/BOJ(백준) 2021. 8. 15. 21:39
https://www.acmicpc.net/problem/22234 22234번: 가희와 은행 가희는 창구가 하나인 은행을 운영하고 있습니다. 가희의 은행이 영업을 시작했을 때, 대기 줄에는 손님이 N명 있습니다. [그림 1] 카운터 직원과 N명의 손님 x번 손님에 대한 정보는 x번 손님의 www.acmicpc.net 운영체제 CPU 스케줄링 알고리즘인 라운드-로빈을 구현하는 문제 현재 점유중인 손님의 time quantum이 종료됨과 동시에 손님이 들어왔을 때 처리가 잘못 된 것인지 .. 계속 틀렸다 ㅠ 1주 4문제 실천중인데.. 1일 1문제 풀어야 하나 ❓❓ ㅎㅎ 코딩하기 정말 힘들다 ~~ #include #include #include using namespace std; typedef struct..
-
[BOJ]백준 22116번: 창영이와 퇴근(C++)/Binary Search, DFSProblem Solving/BOJ(백준) 2021. 8. 15. 21:35
https://www.acmicpc.net/problem/22116 22116번: 창영이와 퇴근 A1,1에서 AN,N까지, 경로상의 최대 경사의 최솟값을 출력한다. www.acmicpc.net 이분탐색 + DFS로 풀거나 다익스트라로 풀 수 있는 문제 나는 다익스트라로 풀다가 계속 맞왜틀 발생해서 그냥 이분탐색 + DFS로 풀었당 ㅎㅎ #include #include #include #include #define ll long long using namespace std; int map[1001][1001], dx[] = { 1,0,-1,0 }, dy[] = { 0,1,0,-1 }, n; bool visit[1001][1001]; bool safe(int x, int y) { return x >= 0 &..
-
[Java] Abstract Class(추상 클래스)와 Interface(인터페이스)의 차이Programming/Java 2021. 8. 15. 16:55
객체지향에 있어서 Abstraction(추상화)는 단순한 인터페이스를 통해 구현의 복잡성을 숨기고 기능을 제공할 수 있는 핵심 개념이다. Java에서 추상화는 주로 Interface(이후 인터페이스)와 Abstract Class(이후 추상클래스)를 통해 구현할 수 있다 1. Class와 Interface Class: 객체를 생성하기 위해 변수와 메소드를 정의하는 사용자 정의 타입. 상태와 행동을 결정하는 property와 method들로 이루어져 있다 Interface: 클래스와 유사하지만 필드 상수와 메소드 정의부를 가지고 있는 사용자 정의 타입. 인터페이스 내의 모든 메소드는 구현체를 포함할 수 없음(Java 8미만. 8 이후 부터는 default와 static 메소드에 한해 구현체를 가질 수 있다)..
-
2021 TOSS NEXT 개발자 챌린지 후기Etc 2021. 8. 15. 01:17
토스에서 개발자 챌린지가 있었다 요즘 네이버, 카카오에 이어 개발자 챌린지 / 개발 챌린지 같이 지원자들의 실질적인 실력을 검증하려는 시도들이 늘어나는 것 같은데 코딩테스트를 본지 오래 되기도 했고 이런 이벤트가 있길래 참가했다 내가 지원한 서버 직군은 2시간 30분 동안의 1차(2시간), 2차(30분) 코딩테스트로 이루어 있었으며 1차 코딩테스트는 평범한 PS 코딩테스트, 2차 코딩테스트는 직무 역량을 검증하는 서술형 문제들이었다 문제 퀄리티나 난이도는 굉장히 좋았고... 오랜만에 내 실력을 마주하고 나니까 오늘을 잊지 않고 더 빡세게 문제를 풀어야 겠다는 생각이 들었다 .... ^^ 알고리즘 문제를 많이 풀어도 오히려 코딩테스트에 대한 부담감이 더 커지는 게 사실이다 그래도 도전해보길 잘 했다 💪🏻