본문 바로가기

알고리즘, 문제 풀이기록

(51)
자바의 정석 연습문제 6-1,2 풀이 이 문제를 풀면서 맞닦트린 고비는 다음과 같다. 1. 생성자 메서드 구현 2. info() 메서드 1. 생성자 메서드 구현 T.A David으로부터 도움을 받아가며 해결했다. this 키워드를 활용했다. 2. if 조건문 안에는 대입 연산자인 '=' 대신 비교 연산자인 '=='을 써야한다. 그런데 Boolean 값이 저장돼있는 변수의 경우 그 자체로 조건문이 성립한다. 그리고 this의 경우 꼭 쓸 필요 없고, 이름 겹칠 때만 쓰면 된다고 David가 일러주었다. 풀이 코드는 여기 있다. https://github.com/MinkiChung/CodeSquadCocoa/tree/master/day13/src 소감: 연습문제 마저 풀면서 OOP를 숙달시키자!
BOJ 8958(OX퀴즈) 풀이 기록 풀이하다가 코코아 슬랙에 질문글을 작성함. Q) BOJ 8958번(OX퀴즈) 질문입니다! 저의 로직부터 설명드리겠습니다. OX퀴즈의 답안 개수와 답안을 입력받습니다. String answers = null, int score = 0, int increments = 1이라고 변수 선언과 초기화를 합니다. 개별 답안에 대해 반복문과 조건문을 통해 처음부터 끝까지 가면서 O가 나올 경우 score += increments, increments += 1을 하며 X가 나올 경우 increments = 1로 초기화합니다. (그렇게 도출된 개별 답안의 최종 score 값을 그때그때 출력합니다.) 개별답안의 score 출력하는 코드블럭을 반복문을 활용하여 전체 답안에 대한 score 값을 출력합니다. 이 로직이 맞는 ..
별찍기 로직 정리 package Week01; import java.util.Scanner; public class BJ1000 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); for (int i = 0; i < N; i++) { for (int j = 0; j
가운데 글자 가져오기 (프로그래머스 레벨1 Java) class programmers { public String solution(String s) { int len = s.length(); String result = null; if (len % 2 == 0) { //중간 두 글자 반환 int m1 = s.length() / 2 - 1; int m2 = m1 + 1; result = String.valueOf(s.charAt(m1)) + String.valueOf(s.charAt(m2)); } else if (len % 2 != 0) { //중간 한 글자 반환 int m = s.length() / 2; result = String.valueOf(s.charAt(m)); } return result; } public static void main(Strin..
크레인 인형뽑기 게임 자바 https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 1. 내내 입력을 어떻게 할지 이리저리 헤맸었는데 다른 사람들의 코드를 확인하니 내가 테스트 케이스에 대한 개념이 부족했다는 생각이 든다. util.Scanner를 활용한 입력 넣는 코드를 단 한줄도 찾지 못하였다. 2. stack을 활용하는 것을 보고 동사이트의 자바 자료구조 강의를 수강해야겠다 싶다. 목표인 코드스쿼드 입과 테스트가 기초 프로그래밍 역량을 확인하기 때문에 기업 코딩 테..
로또의 최고 순위와 최저 순위(프로그래머스 레벨1 Java) https://programmers.co.kr/learn/courses/30/lessons/77484#fnref1 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr import java.util.ArrayList; import java.util.Scanner; class Solution { public int[] solution(int[] lottos, int[] win_nums) { int i; int j; ArrayList matched = new ArrayLi..
#38: 터렛 원을 활용하여 푼다는 것은 알았다. 하지만 이것을 어떻게 코드로 구현해야 할까 싶었다. 그래서 답안을 확인했다. '원의 방정식'을 활용하더라. 즉, 두 터렛의 x,y 좌표와 반지름 r 총 6개의 변수를 정의해준다. 그리고 각종 조건문을 통해 -1, 0 ,1, 2를 출력해준다. 왜냐하면 원이 완전히 일치할때, 아예 만나지 않을 때, 한 점에서 접할 때, 두 점에서 만날 때의 경우가 다이기 때문이다. 우선 40번까지 가는 것이 우선이기 때문에 이 정도만 하고 추후에 돌아와서 풀이를 직접 해보겠다.
#36. N-Queen 전 문항과 마찬가지로 DFS를 활용한 Backtracking 문제이다. 그래프와 BFS/DFS 개념을 숙지해야겠단 생각이 든다. 그래야만 답안 코드 이해라도 할 수 있을 듯 하다. DFS는 재귀 개념에 기반을 두고 있다. 시바타 보요 책에 퀸 문제가 재귀 단원의 한 소단원으로 할애되어 다뤄지고 있다. 그런데 여기서는 DFS라는 용어를 사용하진 않는다. 다만 '분할 해결'을 해야한다고 말을 한다. 파이썬 알고리즘/자료구조의 내공을 더 쌓아야겠다. 항해 끝나기 전까지 혼자서 처음부터 끝까지 풀이할 수 있는 것을 목표로 삼겠다.