자료구조 & 알고리즘/백준(Baekjoon)

[백준] 10830(파이썬) - 행렬 제곱

https://www.acmicpc.net/problem/10830 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 이 문제를 읽으면 먼저 어마어마한 입력값의 범위를 확인하고 시간 초과를 해결해야겠다고 생각이 들것이다. 그럼 어떻게 생각을 해야할까 를 고민하던 도중 시간 복잡도 O(N)을 절반씩 계산하면 O(logN) 이 될 거라고 생각했고 예를 들어 10번을 곱해야 한다면 5번 5번 곱한 값을 더해주면 되고 5번이면 2번 3번으로 나눌 수 있고 이렇게 아토믹하게 쪼개서 생각을 했다. (이 방법을 분할 정복 알고리즘이라고 부..

2021.08.10 게시됨

Language/Java & Kotlin

[자바/Java] 인터페이스(Interface) 란?

저번 시간에는 자바에서 다형성을 띄고 있는 것들 중 '오버 로딩'에 대해서 정리해보았다. 다시 한번 말하지만 자바는 OOP 즉, 객체 지향 언어이고 OOP의 큰 장점이자 OOP에서 가장 중요한 개념 중 하나로는 다형성(Polymorphism)이 있다. 이번 시간에는 자바의 다형성을 극대화해서 개발코드를 간결하고 효율적으로 만들고 유지보수를 쉽게 하게 해주는 인터페이스에 대해 알아보려고 한다. 인터페이스란? 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것이 바로 인터페이스의 역할이자 개념이다. 간단하게 얘기하면 구현된 것은 없지만 밑그림이 그려져 있는 '설계도'라고 생각하면 된다. 예시를 들어보자. 빵가게 사장이 다음날 까지 3명의 직원한테 내일 판매할 식빵을 만들라고 했다. 1번 직원은 쌀가루를 ..

2021.08.09 게시됨

자료구조 & 알고리즘/백준(Baekjoon)

[백준] 1062(파이썬) - 가르침

https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 이 문제는 처음에 풀었을 때 시간 초과가 계속해서 발생했던 문제이다. anta와 tica를 만들수있는 알파벳 a, n, t, i, c를 제외한 알파벳 소문자 중에서 주어진 k 개수에서 5를 제외해서 경우의 수를 모두 구한 다음, 경우의 수로 나머지 알파벳을 만들 수 있는지에 대한 문제인데 이 부분을 구현할 때 시간 초과가 계속 발생했다. 해결방법은 0으로 초기화한 알파벳 체크리스트를 만들어..

2021.08.08 게시됨

글/개발

[에러/삽질] vscode 에서 Delete `␍`eslintprettier/prettier 해결

Visual studio Delete ␍ prettier/prettier 에러 해결 방법 Nest.js를 공부하던 도중 레퍼런스에서 Hot reload를 적용하던 도중 에러가 발생했다. Delete `␍`eslintprettier/prettier 에러를 읽어 보니까 prettier을 사용하면서 설정 문제인 거 같아서 찾아보았다. 해결방법 해당 프로젝트 폴더 내에 보면 eslintrc 설정 파일이 있을 것이다. .esLint 파일을 아래와 같이 밑줄 친 부분을 입력해주고 저장해서 수정한다.

2021.08.08 게시됨