전체 글

깃허브 https://github.com/kimtaesoo99 알고리즘 전용 블로그 https://javajoha.tistory.com/
좋은 개발자가 되기

자바 코드 컨벤션

현재 캡스톤 프로젝트를 진행중인데, 코드 컨벤션에 대한 코드 리뷰를 많이 받았다. 따라서 코드 컨벤션을 정리하고자 글을 작성하였다. 우선 코드 컨벤션이란 실제 지키지 않아도 오류가 발생하는 것은 아니지만, 내가 작성한 코드를 다른 사람들도 쉽게 이해할 수 있는 협업에 있어서 중요한 코드 작성법 규칙이다. 식별자에는 영문/숫자/언더스코어만 허용 변수명, 클래스명, 메서드명 등에는 영어와 숫자만을 사용한다. 상수에는 단어 사이의 구분을 위하여 언더스코어(_)를 사용한다. 정규표현식 `[^A-Za-z0-9_]`에 부합해야 한다. 한국어 발음대로의 표기 금지 식별자의 이름을 한글 발음을 영어로 옮겨서 표기하지 않는다. 한국어 고유명사는 예외이다. 패키지 이름은 소문자로 구성 package com.example...

PS/알고리즘 문제풀이

[백준] 2580번 스도쿠(java)

https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 백트래킹 문제이다. 핵심 입력값 0 이 있는 곳에 1~9까지 가능한 숫자를 대입하면서 스도쿠를 완성시켜야 한다. 전형적인 백트래킹 문제이다. 정답 코드 import java.util.Scanner; class Main { static int[][] map = new int[9][9]; public static void main(String[] args) { Scanner sc = new Scann..

개발일기

[개발일기#6] 소마 14기 최종불합격 & 마음가짐

개발일기(23.3.23) 소마 14기에 지원했었다. 운 좋게 서류, 1차 코테, 2차 코테를 붙고 면접까지 보고 오늘 결과가 나왔다. 결과는 제목에서 알 수 있듯이 불합격하였다. 사실 어느 정도 예상하기도 하였다. 첫 면접이기에 많은 것을 준비하였지만, 정작 기본적인 것을 놓치고 있었다. 당연하게도 아쉬운 마음이 든다. 분명 소프트웨어 마에스트로는 나에게 있어서 좋은 기회일 것 이기 때문이다. 처음 불합격 통보를 받고, 그 사실이 믿기지 않았다. 면접을 망쳤음에도 인간의 욕심이 끝이 없듯이 기대를 하고 있었다. 지금은 이러한 결과를 온전히 받아들일 수 있다. 운이 없었던 점도 있겠지만, 결국 나의 실력이 부족하다는 것이다. 면접준비과정과 면접을 보면서 느낀 점은 잘하는 사람이 정말 많다는 것이다. 면접을..

PS/알고리즘 문제풀이

[백준]14502번 연구소(java)

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net DFS + BFS문제이다. 핵심 3개의 벽을 반드시 세워야 한다. 처음에는 특정조건에 기둥을 세워야 한다고 생각하였지만, N의 값이 8 이하인 것을 보고 모든 경우의 수를 적용해도 된다. 이후 바이러스를 퍼트린다. 남은 0의 개수를 찾는다. 정답 코드 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public cla..

PS/알고리즘 문제풀이

[백준] 1132번 합(java)

https://www.acmicpc.net/problem/1132 1132번: 합 N개의 수가 주어진다. 이 숫자는 모두 자연수이고, 알파벳 A부터 J가 자리수를 대신해서 쓰여 있다. 이 알파벳은 모두 한 자리를 의미한다. 그리고, 각 자리수는 정확하게 알파벳 하나이다. 0으로 www.acmicpc.net 전에 풀었던 문제에서 조건이 하나 추가되었다. 핵심 위의 문제는 만약 ABC + DAB 라면 100A + 10B +C + 100D+ 10A+B로 둘 수 있다. 이를 110A + 100D +11B +C로 둘 수 있다. 따라서 A에 가장 큰 9, D에 8B에 7C에 6을 넣어주면 된다. 단 새로운 조건이 추가되었다. 맨 앞자리가 0이 되면 안 된다. 위의 경우에는 해당되지 않지만, 수가 많아지면 0의 조건..

PS/알고리즘 문제풀이

[프로그래머스] 순위검색(java)

https://school.programmers.co.kr/learn/courses/30/lessons/72412 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 이진탐색을 사용하여 풀 수 있다. 핵심 이 문제는 정확성만 보자면, 완전탐색으로 구할 수 있다. 하지만 효율성을 통과하기 위해 이진탐색을 사용해야 한다. info의 정보를 가지고 "-"를 포함한 모든 조합을 map의 키값으로 가지고 이후 value값을 정렬시켜 이진탐색을 하면 된다. 정답 코드 import java.util.*; class Solution { static Map map;..

PS/알고리즘 문제풀이

[프로그래머스] 메뉴 리뉴얼(java)

https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 조합을 이용한 문제이다. 핵심 사람들이 주문한 상품들을 갖고 조합을 만들어서 가장 많이 나온 조합으로 메뉴를 만드는 것이다. 로직 자체는 있는 단순하다. 정답 코드 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List;..

개발일기

[개발일기#5] 2023년 첫 개발일기 및 방학후기

개발일기(23.3.1) 이전 포스팅에 작성했듯이 우선 인프런강의를 많이 구매했었다. 배움에 대한 욕심이 많았고, 개발을 잘하는 사람이 되고 싶었기 때문이다. 12개를 구매했는데, 총 10개를 수료하였다. 100% 전부 내 것으로 만들었다는 말은 아마 거짓말일 것이다. 그래도 배우면서 전부 하나부터 열까지 타이핑해 보았고, 내 것으로 만들려는 노력을 하였고, 많은 것을 배웠다. 기존에 사용하기만 하고 정확한 개념을 몰랐던 것을 자세히 알게 되었다. 물론 수료를 했다고 끝난 것이 아닌 계속해서 복습할 예정이다. 방학 동안의 기억은 개발밖에 남은 것이 없다. 일주일에 외출을 1번밖에 안 한 것 같다. 또는 아예 외출이 없었다. 물론 운동과 강아지 산책을 제외한 숫자이다. 외출을 하기 전에도 공부는 무조건 하였..

PS/알고리즘 문제풀이

[백준] 1525번 퍼즐(java)

https://www.acmicpc.net/problem/1525 1525번: 퍼즐 세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 0으로 나타낸다. www.acmicpc.net bfs를 이용하여 풀 수 있다. 핵심 2차원 배열을 일렬로 두고 그 값자체를 가지고 판단하면 편하게 구할 수 있다. 값의 위치를 바꿀 때 각각의 index를 알아야 하는데, 이때 StringBuilder를 이용하면 쉽게 위치를 바꿀 수 있다. StringBuilder.setCharAt -> 특정 위치에 char를 삽입할 수 있다. 이를 활용하여 풀어보자. 정답 코드 import java.util.HashMap; import java.util.LinkedList; import..

PS/알고리즘 문제풀이

[백준] 17135번 캐슬 디펜스(java)

https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 조합과 완전탐색을 사용하여 풀 수 있다. 핵심 궁수는 N+1위 치에 3명 배치할 수 있다. 1 턴에 1명을 맞출 수 있고, 다른 궁수도 같은 적을 맞 출 수 있다. 궁수의 위치를 바꾸어가며 그때마다 잡은 적의 수를 카운트해야 한다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; ..

javajoha
기록하는 개발자가 되자