본문 바로가기

알고리즘

[BOJ][C++][1004] 어린 왕자: BFS의 개념과 구현 GB 알고리즘 문제풀이 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주 www.acmicpc.net 1. 문제 이해 1004번 문제, "어린 왕자"는 주어지는 원들의 정보(반지름, 중심 좌표)를 활용해서, 특정 원의 내부에서부터 다른 어떤 원의 내부까지 이동할 때 경계를 몇 번 거쳐야 하는가를 찾는 문제이다. 문제에서는 위와 같은 그림을 제시한다. 그림에서 보이는 각각의 원들에 번호를 붙여 보았다. 바깥의 1번은, 보이지 않는 무한히 큰 원이 하나 있다고 가정한 것이다. 하나의 원에서 다른 원으로 이동할 때 한 번 경계를 .. 더보기
[백준][2단계][2839번] 설탕 배달 (Java) : 동적 계획법, 함정문제(?) * 오류 지적, 오타, 내용 개선 댓글은 대환영입니다! * 본론만 원하신다면 문제 탭까지 내리시면 됩니다. * 해당 글은 PC에 최적화되어 있습니다. 안녕하세요, 갓벨입니다. 오랜만에 찾아뵈었습니다. 입시 서류도 제출했고, 추석도 지났고, 이제 면접을 기다리는 일만 남았군요. 아, 번역도...^^ 2단계 문제도 벌써 마지막 문제군요. 이번 게시글부터 설명을 이전과는 조금 다르게 할 생각입니다. 사실 하도 오랫동안 손을 못 대고 있다 보니까 변한 것도 있지만...요... 한번 문제를 보니까 이번 문제, 뭔가 깁니다. 문제에 스토리가 있습니다. 수학 문제를 풀 때처럼, 읽으면서 풀이를 떠올려 보았습니다. 그런데 개인적인 느낌입니다만, 2단계에서 여태까지 다뤘던 문제들과는 꽤 다른 난이도였습니다. 단순한 문제.. 더보기
[백준][2단계][10869번] 사칙연산 (Java) : 사칙연산(5) * 오류 지적, 오타, 내용 개선 댓글은 대환영입니다! 저도 초보니까요. 안녕하세요, 갓벨입니다. 이번에는 백준 온라인 저지 10869번, '사칙연산'으로 찾아뵈었습니다. 이번 문제는, 여태까지 배워 왔던 사칙 연산자들을 하나씩 써 보는 겁니다. [A+B]에 있는 사칙 연산자에 대한 설명을 다시 가져와 보겠습니다. 사칙 연산자란? 사칙 연산자는 말 그대로 사칙연산을 수행하는 연산자입니다. 그리고 연산자는 프로그래밍에서 사용하는 다양한 기호들입니다. 그러니까 얘네들 말이죠. 사실, 하나 더 있습니다. ,이 녀석이죠. 각각의 설명은 다음과 같습니다.+ : 덧셈을 수행합니다. a + b라고 입력하면 앞과 뒤의 값을 더하죠.- : 뺄셈을 수행합니다. a - b라고 입력하면 앞의 값에서 뒤의 값을 뺍니다.* : .. 더보기
[백준][2단계][10998번] A*B (Java) : 사칙연산(3) * 오류 지적, 오타, 내용 개선 댓글은 대환영입니다! 저도 초보니까요. 안녕하세요, 갓벨입니다. 이번에는 백준 온라인 저지 10998번, A*B로 찾아뵈었습니다. Java를 위시한 프로그래밍 언어에는 다양한 연산자가 있습니다. 대입 연산자, 사칙 연산자, 조건부 연산자... 이번 글에서 다룰 문제는 사칙 연산자, 그 중에서 '*'를 이용해 보는 문제입니다. *는 앞과 뒤의 수를 곱하는 역할을 합니다. [A+B]문제에서 이미 알아 보았으니 사칙 연산자에 대해 더 설명할 필요는 없겠죠? 문제를 풀어 봅시다.문제 두 정수 A와 B를 입력받은 다음, A*B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 첫째 줄에 A*B를 출력한다. 예제 입력1 2 예.. 더보기
[NYPC 2016] 마비노기 듀얼: 올바른 덱인가요? (Java) 작년 8월 8일, 정말 운수 좋게도 를 들으러 갈 수 있었습니다. 현재 넥슨에서 개발자, 디자이너 등으로 일하고 계신 분들의 이야기를 들을 수 있어서 참 좋았습니다. 4차 산업혁명으 대비해서 길러야 할 역량에 관한 이야기도 있어서 참 잘 들었다 싶었습니다. 뭐 NYPC 토크콘서트 감상평 글이 아니니까요, 그냥 이 문제를 보다 보니 생각났습니다. 사실 이 문제, 예전에 프로그래밍은 잘 하지도 못할 때 풀어 본 문제인데, 옛날 글들 뒤져 보다가 나와서 여기에 올려 봅니다. 그땐 머리 꽁꽁 싸매고 했는데, 지금 와서 보니까 또 감회가 새롭네요... 일단 문제를 볼까요? 원본 링크는 [여기] 있습니다. 원본에는 예시가 네 개나 있는데, 그 정도까진 필요 없으니 그냥 자르겠습니다. 아래 더보기 버튼을 누르시면 여.. 더보기
[백준][1단계][11718번] 그대로 출력하기 (Java) : NextLine() * 오류 지적, 오타, 내용 개선 댓글은 대환영입니다! 저도 초보니까요. 안녕하세요, 갓벨입니다. 이번에는 백준 온라인 저지 11718번, 그대로 출력하기로 찾아뵈었습니다. 사소한 것 하나때문에 계속 런타임 에러를 뿜어내는 문제입니다. Next()? NextLine()? Next와 NextLine()은 Scanner 클래스의 메서드입니다. Scanner의 객체를 생성하고 기존에는 NextInt()처럼 특정 자료형을 받는 메서드를 이용했습니다. 둘 다 String(문자열) 자료를 입력받는데, Next()는 입력되는 문자열부터 공백 전까지, NextLine()은 입력받은 줄 전체의 문자열을 저장하는 역할을 수행합니다. 이번 문제에서는 NextLine() 사용합니다. 문제를 봅시다. 문제 입력 받은 대로 출력.. 더보기
[백준][1단계][10718번] We love kriii (Java) : 출력 * 오류 지적, 오타, 내용 개선 댓글은 대환영입니다! 저도 초보니까요. 안녕하세요, 갓벨입니다. 이번에는 백준 온라인 저지 10718번, 'We love kriii'로 찾아뵈었습니다. 난이도만 따져 보면 2557번 [Hello World!]급인데, 설마 두 줄 출력한다고 어려워졌단 건 아닐테고, kriii가 실제 유전데 군대가서(강한친구 대한육군) 만든 문제인가요...? 잘 모르겠네요. 이번 문제부터 문제 상황이 상세하게 주어집니다. 앞으로 나올 문제들을 보면, '문제 상황이 주어짐 -> 이를 해결할 프로그램을 제작하시오'라는 패턴으로 문제가 제공됩니다. 2557번 [Hello World!]에 자세한 설명이 있습니다만. 좀 더 보충 설명을 해 보자면, '문제'에서는 문제 상황, 이야기나 프로그램의 유형.. 더보기