본문 바로가기

전체 글62

풀스택 테크 로드맵 *작성자는 공부 중인 학생으로 잘못 된 정보가 있을 수 있음을 알려드립니다.- 웹 기본 기술HTML : 웹 페이지의 구조를 정의하는 마크업 언어CSS : 웹 페이지의 스타일을 설정하는 스타일 시트 언어JavaScript : 웹 페이지에 동적인 요소와 인터랙션을 추가하는 프로그래밍 언어Saas : CSS를 보다 효율적으로 작성할 수 있도록 확장된 CSS 스크립팅 언어 - 개발 도구 및 환경npm : 자바스크립트 프로그래밍 언어의 패키지 매니저. 라이브러리와 모듈을 관리Git : 소스 코드 버전 관리를 위한 시스템GitHub : Git 리포지터리 호스팅 서비스로, 코드 공유와 협업에 사용GitHub Actions : GitHub에서 직접 CI/CD(지속적 통합 및 배포) 파이프라인을 구축할 수 있는 도구 -.. 2024. 6. 1.
VS Code(Visual Studio Code) 설치 *작성자는 공부 중인 학생으로 잘못 된 정보가 있을 수 있음을 알려드립니다.VS Code(Visual Studio Code) 설치- 파일 확장명 보이기아무 폴더나 열어서 상단에 있는 ‘보기’탭을 누른다.파일 확장명 체크박스를 선택한다.파일의 확장명이 뜨는지 확인한다.💡 개발을 진행할 때 파일의 확장명은 매우 중요하므로, 폴더에서 바로 확인할 수 있도록 설정한다. - Visual Studio Code 다운로드아래 사이트에 접속하여, 사용자의 환경에 맞는 버전을 설치한다.https://code.visualstudio.com/download다운로드 받은 exe 파일을 실행하고, 별다른 설정은 없이 기본 설정으로 설정하면 된다. - 작업폴더 생성하기원하는 위치에 원하는 이름으로 폴더를 생성한다.Visual S.. 2024. 6. 1.
[Java] 스택(Stack) 스택(Stack)이란?스택은 가장 마지막에 들어간 것이가장 처음 나오는 구조이다.이를 LIFO(Last-In-First-Out)라고 한다. 사용하는 대표 사례는수식의 괄호 쌍이나 전위/중위/후위 표기법, DFS, Flood Fill, undo/redo를 구현하는데 사용된다. Java에서 스택을 사용하기 위해서import java.util.stack 코드를 추가해줘야 한다. Java의 스택에서 제공하는 주요 함수는 다음과 같다.Methodpush(item)스택의 가장 위에 item을 추가하고, 추가된 요소를 반환한다.pop()스택의 가장 위에 있는 요소를 삭제하면서, 가장 위 요소를 반환한다.peek()스택의 가장 위에 있는 요소를 삭제하지 않고, 가장 위 요소를 반환한다.empty()스택이 비었는지 확인.. 2024. 5. 30.
[Java] 1919번. 애너그램 만들기 문제 링크 https://www.acmicpc.net/problem/1919*최종 코드는 1차 코드가 아닌 아래쪽 최종 코드를 참고해주시기 바랍니다. 문제 분석이 문제는 쉽게 말하자면 각 문자열이 겹치지 않는 알파벳의 개수를 묻는 것이다.aabbcc와 bbxxyy에서 bb를 제외한 나머지는 모두 겹치지 않기 때문에애너그램을 만들기 위해서는 bb를 제외한, aa,cc,xx,yy를 제거해야 한다. 내가 생각한 방식은 다음과 같다.1. 두개의 문자열을 입력받는다.2. 앞 문자열을 순회하면서 알파벳 배열에 해당하는 알파벳을 +한다.3. 뒷 문자열을 순회하면서 알파벳 배열에 해당하는 알파벳을 -한다.이렇게 하면 두개의 배열을 만들 필요 없이 26 크기를 가진 배열 하나로 계산이 가능하다. 그리고 마지막으로 배열의.. 2024. 5. 28.
[Java] 13300번. 방배정 문제 링크 https://www.acmicpc.net/problem/13300문제 분석각 학생들은 학년과 성별로 구분된다.같은 학년의 같은 성별끼리 구성되어야 하므로 2중 배열을 사용해서같은 학년이면서 같은 성별인 학생끼리 함께 저장한 후에 이를 방의 최대 인원으로 나누고 올림을 하면 방의 개수를 구할 수 있다. 구현 순서를 다음과 같이 정리할 수 있다.1. 전체 학생 수와 최대 인원을 입력받는다.2. 전체 학생 수 만큼 입력을 받는다.(같은 학년/같은 성별끼리 저장)3. 각 배열 값을 K로 나누고 올림하여 방의 개수를 모두 더한다.최종 코드import java.io.*;public class Main { public static void main(String[] args) throws IOExce.. 2024. 5. 28.
[Java] 1158번. 요세푸스 문제 문제 링크 https://www.acmicpc.net/problem/1158문제 분석이 문제를 처음 읽었을 때,이 문제는 완전히 '원형연결리스트(Circular Linked List)'아니야?!라는 생각을 했다.그런데 Java에서의 LinkedList는 기본적으로 양방향이며,원형 연결리스트 기능은 지원하지 않는다. 자바에서 구현한 연결 리스트의 노드에는내부적으로 이전과 다음 노드의 주소값을 가지고 있다고 했는데그냥 이 주소값을 수동으로 바꾸어서마지막 노드의 다음 노드 주소값에 첫번째 노드의 주소값을 넣으면 되지 않을까?라는 생각에 열심히 알아보았지만,Java에서 지원하는 LinkedList의 참조값을 직접 수정할 수 없다고 한다. 따라서 문제를 해결 할 수 있는 방안은 크게 다음과 같다.1. 원형 연결 .. 2024. 5. 28.
[Java] 5397번. 키로거 문제 링크 https://www.acmicpc.net/problem/5397 문제 분석이전에 풀었던 1406번 에디터 문제와 크게 다르지 않다.동일하게 문자의 삽입과 삭제가 빈번하게 일어나는 문제이므로LinkedList로 구현한다. 구상한 해결 방안은 다음과 같다.1.int형 변수를 입력받는다.2.입력받은 수 만큼 아래 과정을 반복한다.3.문자열을 입력받는다.4.를 입력하면 오른쪽으로 이동-를 입력하면 왼쪽의 문자를 삭제, 문자를 입력하면 저장한다.5.최종 LinkedList를 문자열로 변환 후 출력한다. 모두 1406번에서 구현한 코드이기 때문에 어렵지 않게 구현할 수 있다. 최종 코드import java.io.*;import java.util.LinkedList;import java.util.List.. 2024. 5. 28.
[Java] 1406번. 에디터 문제 링크 https://www.acmicpc.net/problem/1406*최종 코드는 1차 코드가 아닌 아래쪽 최종 코드를 참고해주시기 바랍니다. 문제 분석문자열의 길이가 최대 100,000이고 최대 500,000번의 삽입/삭제 또는 커서의 이동이 일어난다.삽입 삭제가 주된 문제이기 때문에 Linked List로 접근하면 된다. 내가 구상한 해결법은 다음과 같다.1. 문자열을 입력받는다.2. LinkedList로 변환한다.3. M(명령어 개수)를 입력받는다.4. 커서를 가장 마지막에 위치시킨다.5. M만큼 돌면서 명령어를 실행시킨다. 여기서, 4번에는 세부적으로 다양한 구현이 있다.방법1) 2번의 LinkedList로 변환하는 과정에서 length++로 연산한다. -> O(1)방법2)LinkedLis.. 2024. 5. 27.