목록분류 전체보기 (62)
Live Today
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dilKL3/btskgdNlsWr/BKlqK3k1uRWNukpKPJIvl1/img.png)
https://www.acmicpc.net/problem/17825 17825번: 주사위 윷놀이 주사위 윷놀이는 다음과 같은 게임판에서 하는 게임이다. 처음에는 시작 칸에 말 4개가 있다. 말은 게임판에 그려진 화살표의 방향대로만 이동할 수 있다. 말이 파란색 칸에서 이동을 시작하면 www.acmicpc.net 💡 중복순열 + 백트래킹 + 완전탐색 ✔️ 한 번에 해결하지 못한 이유 11%에서 틀려서 조금 짜증이 났던 문제 ㅎ--ㅎ 말의 방문체크 부분 때문에 틀렸던 것이었다. "말이 이동을 마치는 칸에 다른 말이 있으면 그 말은 고를 수 없다." 이 조건을 고려해야 해서 각 말의 위치 확인이 필요했다. 윷놀이 판에서 16,22,24,26,28,30의 숫자들은 숫자는 같지만 위치가 서로 다른 곳에 있어서 이..
https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 💡 조합 + 시뮬레이션 + 완전 탐색 + bfs ✔️ 문제 풀이 궁수 3명 배치 → 조합 조합으로 궁수 3명을 배치할 때마다 기존 board 배열을 copy해서 풀어야 함. 각 궁수 위치에서 거리가 D이하이면서 가장 가까운 적 제거 여러 명이면, 가장 왼쪽에 있는 적 제거 result가 최대가 되려면, 각 궁수마다 서로 다른 표적을 제거해야 함. ✅ 정답 코드 import java.io.BufferedRea..
Java 장단점 장점 : 운영체제에 독립적이다. : JVM(자바 가상 머신) 위에서 동작하기 때문에 객체지향 언어이다. : 객체 지향적으로 프로그래밍하기 위해 여러 언어적 지원을 하고있다. (상속, 추상화, 다형성, 캡슐화) 자동으로 메모리를 관리해준다. : Garbage Collector로 인해 별도의 메모리 관리가 필요없으며 비즈니스 로직에 집중할 수 있게 해준다. 오픈소스이다. : OpenJDK가 오픈소스이다. OracleJDK는 사용 목적에 따라 유료가 될 수 있다. : 많은 Java 개발자가 존재하고 생태계가 잘 구축되어 있다. 오픈소스 라이브러리가 풍부하며 잘 활용하면 짧은 개발 기간 내에 안정적인 애플리케이션을 구축할 수 있다. 멀티스레드를 쉽게 구현할 수 있다. : 자바는 스레드 생성 및 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b056HM/btsj50NXVdH/J2eJN0N908cKcSRivNnOD0/img.png)
https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 💡 HashMap과 PriorityQueue, Sort를 사용해서 해결 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; im..
JavaScript 면접 대비 ✔️ 자바스크립트 클로저 함수와 그 함수가 선언된 렉시컬 환경의 조합이다. 클로져는 함수 내부에서 정의된 함수가 외부 함수의 변수에 접근할 수 있는 현상을 나타낸다. 클로저를 사용하여 비동기 작업에서 변수의 상태를 보존하거나, 모듈 패턴을 구현하여 private 변수를 만들 수 있다. function makeFunc() { const name = "Mozilla"; function displayName() { console.log(name); } return displayName; } const myFunc = makeFunc(); myFunc(); 내부 함수가 외부 함수의 변수에 접근할 수 있습니다: 외부 함수의 변수가 내부 함수에 의해 참조되면, 해당 변수는 클로저에 포..
✔️ 객체 지향 프로그래밍이란 ? 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다. 우리가 실생활에서 쓰는 모든 것을 객체라 하며, 객체 지향 프로그래밍은 프로그램 구현에 필요한 객체를 파악하고 상태와 행위를 가진 객체를 만들고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 말합니다. 즉, 기능이 아닌 객체가 중심이며 "누가 어떤 일을 할 것인가?"가 핵심 특징으로는 캡슐화, 상속, 다형성, 추상화 등이 있고, 모듈 재사용으로 확장 및 유지보수가 용이합니다. 객체 지향 프로그래밍은 역할과 구현을 구분하여 객체들 간의 직접적인 결합을 피하고, 느슨한 관계..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c2RvAs/btsiJzEy3wc/Kzz5AE8u8YE2zp9p24e9sk/img.png)
https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 🌙 문제 조건을 세세히 읽고 풀자. "만일 전부 다 녹을 때까지 두 덩어리 이상으로 분리되지 않으면 프로그램은 0을 출력한다." → 이 조건을 인지 못해서 틀렸었다. ✔️ 풀이방법 매년 빙하가 녹는다. 여기서 빙하 녹는 것 처리할 때 바로바로 2차원배열에 바뀐 값을 반영하면 안됨. 그래서 모든 2차원 배열 빙하 녹는 것 처리한 다음 마지막에 한 번에 2차원배열 값 바꿔야 함. 빙하 덩어리 체..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CJKTN/btr1IsnzkCD/QLl0owMMxzkmgfoaCzClm1/img.png)
https://www.acmicpc.net/problem/19237 19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 💡문제 조건을 세세히 읽어보자 ! 계속 문제를 읽어보자 ! 디버깅을 통해 문제를 해결하자 ! 코드가 길어지니 함수 단위로 쪼개서 유닛 테스트를 해보자 ! 3시간 만에 해결한 문제 ㅠㅠ 디버깅을 하며 해결했ㄷ ㅏ !!!!!! 💛 내가 생각한 풀이 모든 상어들이 자신의 현재 위치에 냄새를 뿌린다. 매 초마다 상어가 이동한다. (상어를 바로 이동시키는 것이 ..
https://school.programmers.co.kr/learn/courses/30/lessons/42577?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡2가지 방법의 문제풀이 ! ✔️ Arrays.sort() 후 for문을 돌며 다음 문자열이 이전 문자열을 접두어로 포함하는지 체크하는 방법 ✔️ 이 문제의 유형인 Hash 자료구조를 사용해 푸는 방법 🔹 1번째 방법 Arrays.sort() 를 사용해 문자열 배열 정렬 startsWith() 를 사용해 해당 문자열이 이전 문자열을 접두어로 갖는지 확인 import jav..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2Tytw/btrYTNV9ohH/akpHuZVk2UzKUrmA1fBjp1/img.png)
https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 💡 문자열 정렬 알고리즘 문제 ! - Collections.sort()를 활용해 input값의 문자열을 사전 순으로 정렬함. - PrirorityQueue를 활용해 단어의 길이가 같다면 문자열로 정렬되도록 설정함. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impo..