
이 글은 인프런의 "알잘딱깔센 GitHub" 강의를 듣고 정리한 내용입니다. 인프런 강의 링크 [무료] 30분 요약 강좌 시즌4 : 알잘딱깔센 GitHub - 인프런 | 강의 알아서! 잘! 딱! 깔끔하고! 센스있게! 정리하는 GitHub 핵심 개념 책의 무료강의입니다. 해당 책과 Notion 링크도 무료로 다운로드 받을 수 있습니다. 비영리 프로젝트로 교재활용도 허락없이 가능합 www.inflearn.com 노션 링크 개인 프로젝트를 진행하면서 Github을 사용하였는데, 코드를 Github에 올리고 변경사항을 저장하는 용도로만 사용했었다. 코드를 공유하는 용도뿐만 아니라 협업 관리 툴로 Git과 Github은 무조건 필수적으로 사용하기 때문에, 전체적으로 어떻게 사용하는지 알고 싶어서 "30분 요약 강..
내부 클래스(Nested Class)는 다음과 같이 다른 클래스 안에 정의된 클래스를 의미한다. public class Outer{ // 인스턴스 클래스 public class Inner{ } // 스테틱 클래스 static public class sInner{ } } 인스턴스 내부 클래스는 외부 클래스를 참조하는 변수를 선언하지 않아도 바이트 코드 변환시 자동으로 외부를 참조하는 변수를 만든다. 왜냐하면 static이 아닌 내부 클래스는 바깥 인스턴스 없이는 생성할 수 없기 때문이다. 두 클래스의 관계는 내부 클래스의 인스턴스 안에 만들어지며, 메모리를 차지한다. 외부 인스턴스에 대한 참조가 존재하기 때문에, 가비지 컬렉션이 인스턴스 수거를 하지 못하여 메모리 누수가 생길 수 있다. static 내부 ..
https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 풀이 DFS를 사용하여 스도쿠의 빈 칸에 모든 수를 집어넣고 각 경우마다 스도쿠가 될 수 있는지 체크한다. 로직 1. 스도쿠의 빈 칸 좌표를 ArrayList points에 넣는다. 2. sudoku(idx:0)을 호출한다. 이 때 idx는 points의 인덱스다. 3. points에서 좌표를 꺼내고, for문으로 1~9까지 해당 좌표에 들어갈 수 있는지 check() 함수를 통해 체크한다. 들어..

https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 풀이 map을 사용하여 (확장자 이름, 파일 개수)를 저장한다. 또한 확장자는 사전순을 출력해야 하므로 확장자를 정렬하기 위해, 확장자 이름은 따로 ArrayList에 저장한 다음 이후 정답을 출력할 때 사용한다. 로직 1. HashMap map과 ArrayList list를 선언한다. 2. 파일을 입력받고 파일의 확장자 이름을 뽑아낸다. 3. 확장자 이름이 map의 키로 존재한다면, 해당 엔트리의 값을..

https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 풀이 말이 지날 수 있는 최대의 칸 수를 구하기 위해, DFS를 사용해서 모든 경우를 탐색해야 한다. 이 때 같은 알파벳이 적힌 칸을 두 번 지날 수 없으므로, 중복되는 알파벳이 있는지 체크하기 위해 map을 사용한다. 칸을 이동할 때마다 그 칸의 알파벳을 map의 key로 저장하고, 다음 칸으로 이동하기 전 map.containsKey() 메서드를 호출하여 다음 칸의 알파벳이 map에 있..

https://www.acmicpc.net/problem/10994 10994번: 별 찍기 - 19 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net 풀이 처음 예제 출력을 보면, 1은 별 하나가 찍혀있고, 2는 1의 출력에서 위아래 1줄을 띄고 감싸는 것 같은 모양이다. 별이 찍히는 규칙을 살펴보자면, 일단 가운데 줄을 기준으로 위아래가 대칭이다. 홀수 번째 줄의 경우, 맨 윗줄은 모두 별로 채워져 있고, 그 다음 홀수 번째줄부터 계속 양쪽 사이드에서 별이 1개씩 줄어들고 있다. 짝수 번째 줄의 경우, 처음 줄(위에서 2번째)은 양 끝에 별이 1개씩 있고, 그 다음 짝수 번째줄부터 계속 양쪽 사이드에서 별이 1개씩 추가되고 있다. 위와 같은 규칙을 코드로 구현하면 아래와 ..

https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 풀이 문제를 보고 조합을 이용해야겠다는 생각이 들었다. 암호에는 알파벳을 중복하여 사용할 수 없고, 암호를 이루는 알파벳이 증가하는 순서로 배열되어야 한다. 즉, 입력받는 C개의 문자를 배열에 저장하여 알파벳 순으로 정렬하고, 배열 인덱스(0 ~ C-1)의 모든 조합의 경우의 수를 구하면, 가능성 있는 암호의 모든 경우를 구할 수 있다. 조합은 DFS로 구현한다. 조합을 구현하는 기본 틀은 다음과 같다..

https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 풀이 스위치의 상태를 입력받고 학생의 성별에 따라 다르게 처리하면 된다. 스위치 배열의 인덱스를 1부터 시작하여 n까지 입력받기로 정했기 때문에 이후 인덱스의 범위를 체크할 때 1부터 n까지 체크해야 한다. 코드 import java.io.*; import java.util.*; public class Main { static int n; public static void chageSwitc..
https://www.acmicpc.net/problem/4396 4396번: 지뢰 찾기 지뢰찾기는 n × n 격자 위에서 이루어진다. m개의 지뢰가 각각 서로 다른 격자 위에 숨겨져 있다. 플레이어는 격자판의 어느 지점을 건드리기를 계속한다. 지뢰가 있는 지점을 건드리면 플레이어 www.acmicpc.net 풀이 간단한 구현 문제다. 지뢰의 위치와 게임판을 입력받은 다음, 게임판에서 열린 칸(x표시)마다 주변에 지뢰가 몇 개 있는지 카운트하고 그 값을 따로 배열에 저장하여 출력한다. 하지만 "지뢰가 있는 칸이 열렸다면 지뢰가 있는 모든 칸이 별표(*)로 표시되어야 한다." 그래서 열린 칸이 지뢰인 경우를 따로 체크하여 이후 정답을 출력하기 전 지뢰가 있는 모든 칸을 별표로 표시하고 출력해야 한다. 코드..
https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 풀이 5X5 배열을 만들고 배열에 값을 채워 넣은 다음, 숫자를 입력할 때마다 모든 행/열/대각선을 탐색하여 빙고가 되는지 체크한다. 3줄 빙고가 완성된다면 그 위치를 answer에 저장하고, 모든 입력이 끝난 다음 출력한다. 전역 변수 및 지역 변수 설명 int[5][5] arr : 빙고 배열 boolean[5][5] flag : 사회자가 부른 수가 빙고에 있으면 해당 위치를 true로 변경 이미 빙고가 된 ..

https://www.acmicpc.net/problem/14467 14467번: 소가 길을 건너간 이유 1 3번 소는 위치 1, 0, 1에서 관찰되었으므로 길을 최소 두 번 건넜음을 확인할 수 있다. 4번 소도 길을 한 번 건넜으며, 나머지 소는 길을 건넌 기록이 확인되지 않는다. www.acmicpc.net 풀이 매우 간단한 문제다. HashMap을 사용하여 소의 번호와 위치를 저장하고, map의 메서드를 사용하여 문제를 해결한다. 이미 있는 소의 경우, 소의 원래 위치와 현재 위치가 다른 경우 cnt에 1을 더하고, map.put() 메서드를 사용하여 현재 key에 해당하는 map의 엔트리의 값을 변경한다. 새로운 소의 경우, map에 (번호, 현재 위치)를 추가한다. 코드 import java.i..
인프메이션(인프런 스토리) [인프메이션 #48] 사이드 프로젝트, 어디까지 해봤니? - 인프런 | 스토리 워라밸을 챙기는 똑똑한 방법? #사이드프로젝트 #토이프로젝트 #워라밸 [사진]지난 2월 뉴욕타임스가 단어 맞추기 게임 ‘워들(Wordle)’을 인수했어요. 워들은 개발자 조시 워들의 사이드 프로 www.inflearn.com 인프런 프로젝트 / 스터디 모집 게시판 스터디 - 인프런 | 커뮤니티 누구나 함께하는 인프런 커뮤니티. 관심있는 주제에 대한 스터디를 함께해보세요. - 스터디 | 인프런... www.inflearn.com Hola(스터디, 사이드 프로젝트 모집) Hola! 스터디, 사이드 프로젝트 팀원을 구하는 가장 쉬운 방법! holaworld.io 데브폴리오(개발자 토이프로젝트 모아보기 서비..