코딩 11

JAVA - 숫자카드 (백준, 10815)

문제 문제의 요구사항은 결국 길이 (갯수)N 의 카드와 길이 (갯수)M 의 카드를 비교해 일치하는 index 는 1 아니면 0을 출력한다. 맨처음엔 이분탐색 문제인지도 모르고 그냥 단순히 완전탐색으로 찾으려고만 했다.. import java.util.*; public class main { public void card() { List aList = new ArrayList(); List bList = new ArrayList(); String result = ""; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); for(int i=0; i

알고리즘 공부 - 검색부터 다시 해보자

개요 나는 현재 개발자로 솔루션회사에서 근무중인 주니어개발자이다. JAVA 언어가 베이스인 회사에서 자바와 스프링 프레임워크로 코딩하는 것은 당연하지만, 일을 할수록 공부하는 시간이 줄어들고 알고리즘등 혹시 나중에 코딩테스트가 필요할텐데 싶은 생각에 앞으로 꾸준히 문제를 풀어야겠다고 생각이 들어 문법은 건너뛰고 검색 알고리즘부터 재귀, 큐, 스택등으로 개념정리부터 해보려고 한다. 열심히 정리해보자! 선형검색(linear search) 간단하게 생각하자면 선형 = 일자로 쭉 늘어진 것 따위 일것이다. 그렇게 key 와 일치하는 값을 찾기위해 하나씩 검색하면서 진행하는 알고리즘으로 보통 for문이나 switch문으로 loop를 돌려서 index 를 증가시키며 찾는 것이다. 가장 단순한 알고리즘으로 구현하기도..

자료구조 - 큐(queue), 간단한 코드로 파악하기

개념 큐(queue), 역시 스택과 비슷하게 데이터를 일시적으로 쌓아놓기 위한 자료구조입니다. 다만 차이점은 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO, First In First Out) 구조입니다. 실 생활에서 예를 들자면 마트의 대기열이나, 은행 창구에서 차례를 기다리는 순서라고 이해하면 편합니다. enqueue : 인큐 라고 불리며, 큐에 데이터를 삽입하는 작업을 뜻합니다. dequeue : 디큐 라고 불리며, 인큐의 반대로 데이터를 꺼내는 작업을 뜻합니다. front : 프런트는 데이터를 꺼내는 out 쪽을 뜻합니다. rear : 리어는 데이터를 넣는 쪽을 뜻하며 back이라고도 불립니다. 큐를 구현하기 쉬운방법은 역시 배열입니다. public class IntQueue { p..

자료구조 - Stack 를 간단한 코드로 파악하기

개념 스택(Stack)이란? 데이터를 저장하기 위한 자료구조중 하나로 데이터를 일시적으로 저장하기 위해 고안된 개념이며, 가장 나중에 넣은 데이터를 가장 먼저 꺼내는 방식으로 진행됩니다. 데이터의 입출력 순서를 후입선출(LIFO, Last In First Out) 이라고 불리며, 간단하게 표현하자면 가장 나중에 넣은 데이터를 가장 먼저 꺼냅니다. 사용단어? push : 스택에 데이터를 넣는 작업 pop : 스택에서 데이터를 꺼내는 작업 top : 푸시와 팝이 이루어지는 가장 바깥쪽을 탑이라 합니다 bottom : 스택의 가장 아랫부분, 푸시가 가장먼저 이루어졌던 데이터의 위치를 바텀이라고 합니다 peek : 피크(peek)란 '몰래 엿보다'라는 뜻을 가지며 스택의 가장 상단의 top 인덱스를 보여줍니다...

프로그래머스 - 완주하지 못한 선수(JAVA)

문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예participantcompletionreturn ["leo", "kiki",..

알고리즘 기초연습부터 - 1부터 n까지 더하기

개요 코딩테스트 연습을 하는중에 알고리즘 기초부터 차근차근 블로그에 올려보면 좋겠다고 생각했다. 아직 알고리즘과 자료구조가 많이 약해서, 지금부터 공부하지않으면 나중에 후회할거같다는 생각에 정리해보겠습니다. 처음엔 1부터 n까지의 수를 구하는 것입니다. 다들 코딩테스트 시작하실 땐 이런문제부터 풀었던거 같아요. 처음엔 어려워하겠죠? 물론 자바 기준으로 합니당.. 1부터 n까지의 합 구하기 예를 들어 구하는 값인 n 이 3이라면, 1 + 2 + 3 = 6 일것입니다. 이처럼 n의 값까지의 정수를 모두 더해야하는 경우, 반복문을 통해 이를 해결합니다. 먼저 for문을 통해 구해보겠습니다. int n = 3; //구해야 하는 값 n이 3이라면? int sum = 0; for(int i = 0; i

자바 개념정리하기 - JVM, Memory, OOP

시작하며 뜬금없지만. 혼자 블로그에 글로 쓰면서 자바, 스프링의 이론이나 개념 혹은 단어의 뜻을 한번 적으면서 정리하고자 합니다.. 워낙 프로그래밍에서 쓰이는 단어들이 낯설고 익숙하지 않거나, 자주쓰이지 않지만 알고있어야하는 단어와 뜻들이 있는거같습니다. 애매하게 알고있거나, 대략 이런뜻이겠거니, 혹은 공부했지만 까먹었던걸 한번 복기하자는 의미에서 포스팅을 하게 되었습니다. JVM - Java Virtual Machine 자바 가상머신, 말 그대로 가상으로 존재하는 소프트웨어이다. 자바언어는 os에 독립적이고자 JVM을 활용해, 자바코드를 바이트 코드로 변환하고 각 os에 맞게 전달한다. 이처럼 JVM이 동작하는 몇가지 특징이나 기능들을 살펴보자면, 자바 인터프리터 (interpreter) : 자바 컴파..

Programming/JAVA 2021.12.14

프로그래머스 - 키패드 누르기 (JAVA)

링크 https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 ..

스프링부트 기초 - 3. 게시판 만들기, 조회

이전글 https://goodthinking.tistory.com/42 스프링부트 기초 - 2. CRUD 게시판 만들어보기 이전글 https://goodthinking.tistory.com/41 스프링부트 기초 - 1. 스프링부트 개요 & 프로젝트 설치 및 설정 개요 안녕하세요. 이번에 스프링부트를 공부하면서 블로그에 정리하면 좋을것같아 찾아왔습니 goodthinking.tistory.com 이전글에서는 게시판만들기에 앞서 기본 main 페이지를 생성하고 컨트롤러를 등록했습니다. 이제 본격적인 게시판생성을 해보겠습니다. 그전에 header 를 먼저 정리하겠습니다. 필요한 부분만 남기고 일단 지워둘게요. 그리고 Main 페이지의 내용을 table 로 처리합니다. {{>layouts/header}} 번호 제..

Programming/Spring 2021.12.07

스프링부트 기초 - 2. 게시판 시작해보기

이전글 https://goodthinking.tistory.com/41 스프링부트 기초 - 1. 스프링부트 개요 & 프로젝트 설치 및 설정 개요 안녕하세요. 이번에 스프링부트를 공부하면서 블로그에 정리하면 좋을것같아 찾아왔습니다. 기존에 공부할땐 노션에 정리했는데 노션이 좋긴하지만, 블로그랑 성격이 조금 달라서 포트폴 goodthinking.tistory.com 시작 이전에는 설치와 설정을 간단하게 했습니다. 이번 포스팅부터는 간단한 게시판을 통해 CRUD를 구현해보겠습니다. 먼저 Spring Boot 는 기본적으로 톰캣 서버가 내장되어있어 따로 설정이 없어도 실행이 됩니다. 프로젝트를 실행 후 src >main >resources >static 폴더에다가 index.html 을 생성합니다. 웰컴 페이지..

Programming/Spring 2021.12.02