khk990의 등록된 링크

키자드에 등록된 총 306개의 포스트를 확인하실 수 있습니다.

Naver Blog

[Java] 최소직사각형

https://programmers.co.kr/learn/courses/30/lessons/86491?language=java 코딩테스트 연습 - 최소직사각형 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면... programmers.co.kr 문제 설명 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을

Naver Blog

[Java] 부족한 금액 계산하기

https://programmers.co.kr/learn/courses/30/lessons/82612?language=java 코딩테스트 연습 - 부족한 금액 계산하기 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요. 제한사항 놀이기구의 이용료 price : 1 ≤ price ... programmers.co.kr 문제 설명 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다

Naver Blog

[Java] 피로도

https://programmers.co.kr/learn/courses/30/lessons/87946?language=java 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 8... programmers.co.kr 문제 설명 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기

Naver Blog

[Java] k진수에서 소수 개수 구하기

https://programmers.co.kr/learn/courses/30/lessons/92335?language=java 코딩테스트 연습 - k진수에서 소수 개수 구하기 문제 설명 양의 정수 n 이 주어집니다. 이 숫자를 k 진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0 처럼 소수 양쪽에 0이 있는 경우 P0 처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P 처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P 처럼 소수 양쪽에 아무것도 없는 경우 단, P 는 각 자릿수에 0을 포함하지 않는 소수입니다. 예를 들어, 101은 P 가 될 수 없습니다. 예를 들어, 437674을 3진수로 바꾸면 211... programmers.co.kr 문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개

Naver Blog

[Java] 주차 요금 계산

https://programmers.co.kr/learn/courses/30/lessons/92341?language=java 코딩테스트 연습 - 주차 요금 계산 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다. 요금표 기본 시간(분) 기본 요금(원) 단위 시간(분) 단위 요금(원) 180 5000 10 600 입/출차 기록 시각(시:분) 차량 번호 내역 05:34 5961 입차 06:00 0000 입차 06:34 0000 출차 07:59 5961 출차 07:59 0148 입차 18:59 0000 입차 19:09 0148 출차 22:59 5961 입차 23:00 5961 출차 programmers.co.kr 문제 설명 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다. 요금표 기본 시간(

Naver Blog

[Java] 팀 결성

학교에서 학생들에게 0번부터 N번까지의 번호를 부여했다. 처음에는 모든 학생이 서로 다른 팀으로 구분되어, 총 N + 1개의 팀이 존재한다. 이때 선생님은 '팀 합치기' 연산과 '같은 팀 여부 확인'연산을 사용할 수 있다. 1. '팀 합치기' 연산은 두 팀을 합치는 연산이다. 2. '같은 팀 여부 확인' 연산은 특정한 두 학생이 같은 팀에 속하는지를 확인하는 연산이다. 선생님이 M개의 연산을 수행할 수 있을 때, '같은 팀 여부 확인' 연산에 대한 연산 결과를 출력하는 프로그램을 작성하시오. 입력조건 : 첫째 줄에 N,M이 주어진다. M은 입력으로 주어지는 연산의 개수이다. (1 <= N, M <= 100,000) 다음 M개의 줄에는 각각의 연산이 주어진다. '팀 합치기' 연산은 0 a b 형태로 주어진다. 이는 a번 학생이 속한 팀과 b번 학생이 속한 팀을 합친다는 의미이다. '같은 팀 여부 확인' 연산은 1 a b 형태로 주어진다. 이는 a번 학생이 속한 팀과 b번 학생이 속한

Naver Blog

[Java] 도시 분할 계획

동물원에서 막 탈출한 원숭이 한마리가 세상 구경을 하고 있다. 어느 날 원숭이는 '평화로운 마을'에 잠시 머물렀는데 마침 마을 사람들은 도로 공사 문제로 머리를 맞대로 회의 중이었다. 마을은 N개의 집과 그 집들을 연결하는 M개의 길로 이루어져 있다. 길은 어느 방향으로든지 다닐 수 있는 편리한 길이다. 그리고 길마다 길을 유지하는데 드는 유지비가 있다. 망르의 이장은 마을을 2개의 분리된 마을로 분할할 계획을 세우고 있다. 마을이 너무 커서 혼자서는 관리할 수 없기 때문이다. 마을을 분할할 떄느 각 분리된 마을 안에 집들이 서로 연결되도록 분할해야 한다. 각 분리된 마을 안에 있는 임의의 두 집 사이에 경로가 항상 존재해야 한다는 뜻이다. 마을에는 집이 하나 이상 있어야 한다. 그렇게 마을의 이장은 계획을 세우다가 마을 안에 길이 너무 많다느 ㄴ생각을 하게 되었다. 일단 분리 된 두 마을 사이에 있는 길들은 필요가 없으므로 없앨 수있다. 그리고 각 분리된 마을 안에서도 임의의 두

Naver Blog

[Java] 커리큘럼

동빈이는 온라인으로 컴퓨터공학 강의를 듣고 있다. 이때 각 온라인 강의는 선수 강의가 있을 수 있는데, 선수 강의가 있는 강의는 선수 강의를 먼저 들어야만 해당 강의를 들을 수 있다. 예를 들어 '알고리즘' 강의의 선수 강의로 '자료구조'와 '컴퓨터 기초'가 존재한다면, '자료구조'와 '컴퓨터 기초'를 모두 들은 이후에 '알고리즘' 강의를 들을 수 있다. 동빈이는 총 N개의 강의를 듣고자 한다. 모든 강의는 1번부터 N번까지의 번호를 가진다. 또한 동시에 여러 개의 강의를 들을 수 있다고 가정한다 예를 들어 N = 3일 때, 3번 강의의 선수 강의로 1번과 2번 강의가 있고, 1번과 2번 강의는 선수 강의가 없다고 가정하자. 그리고 각 강의에 대하여 강의 시간이 다음과 같다고 가정하자. 1번 강의 : 30시간 2번 강의 : 20시간 3번 강의 : 40시간 이 경우 1번 강의를 수강하기까지의 최소 시간은 30시간, 2번 강의를 수강하기까지의 최소 시간은 20시간, 3번 강의를 수강하기

Naver Blog

[Java] 게임 개발

현민이는 게임 캐릭터가 맵 안에서 움직이는 시스템을 개발 중이다. 캐릭터가 있는 장소는 1 X 1 크기의 정사각형으로 이뤄진 N X M 크기의 직사각형으로, 각각의 칸은 육지 또는 바다이다. 캐릭터는 동서남북 중 한곳을 바라본다. 맵의 각 칸은 (A, B)로 나타낼 수 있고, A는 북쪽으로 부터 떨어진 칸의 개수, B는 서쪽으로부터 떨어진 칸의 개수이다. 캐릭터는 상하좌우로 움직일 수 있고, 바다로 되어 있는 공간에는 갈 수 없다. 캐릭터의 움직임을 설정하기 위해 정해 놓은 메뉴얼은 이러하다. 1. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향(반시계 방향으로 90도 회전한 방향)부터 차례대로 갈 곳을 정한다. 2. 캐릭터의 바로 왼쪽 방향에 아직 가보지 않은 칸이 존재한다면, 왼쪽 방향으로 회전한 다음 왼쪽으로 한칸을 전진한다. 왼쪽 방향에 가보지 않은 칸이 없다면, 왼쪽 방향으로 회전만 수행하고 1단계로 돌아간다. 3. 만약 네 방향 모두 이미 가본 칸이거나 바다로 되어있는 칸인

Naver Blog

[Java] 숫자 문자열과 영단어

https://programmers.co.kr/learn/courses/30/lessons/81301?language=java 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s 가 매개변수로 주어집니다. s 가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성... programmers.co.kr 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게

Naver Blog

[Java] 거리두기 확인하기

https://programmers.co.kr/learn/courses/30/lessons/81302?language=java 코딩테스트 연습 - 거리두기 확인하기 개발자를 희망하는 죠르디가 카카오에 면접을 보러 왔습니다. 코로나 바이러스 감염 예방을 위해 응시자들은 거리를 둬서 대기를 해야하는데 개발 직군 면접인 만큼 아래와 같은 규칙으로 대기실에 거리를 두고 앉도록 안내하고 있습니다. 대기실은 5개이며, 각 대기실은 5x5 크기입니다. 거리두기를 위하여 응시자들 끼리는 맨해튼 거리 1 가 2 이하로 앉지 말아 주세요. 단 응시자가 앉아있는 자리 사이가 파티션으로 막혀 있을 경우에는 허용합니다. 예를 들어, 위 그림처럼 자리 사이에 파티션이 존재한다면 맨해튼 거리가 2여도 거리두기를 지킨 것... programmers.co.kr 문제 설명 개발자를 희망하는 죠르디가 카카오에 면접을 보러 왔습니다. 코로나 바이러스 감염 예방을 위해 응시자들은 거리를 둬서 대기를 해야하는데 개발 직군

Naver Blog

[Java] 표 편집

https://programmers.co.kr/learn/courses/30/lessons/81303?language=java 코딩테스트 연습 - 표 편집 업무용 소프트웨어를 개발하는 니니즈웍스의 인턴인 앙몬드는 명령어 기반으로 표의 행을 선택, 삭제, 복구하는 프로그램을 작성하는 과제를 맡았습니다. 세부 요구 사항은 다음과 같습니다 위 그림에서 파란색으로 칠해진 칸은 현재 선택된 행 을 나타냅니다. 단, 한 번에 한 행만 선택할 수 있으며, 표의 범위(0행 ~ 마지막 행)를 벗어날 수 없습니다. 이때, 다음과 같은 명령어를 이용하여 표를 편집합니다. "U X" : 현재 선택된 행에서 X칸 위에 있는 행을 선택합니다. "D X" : 현재 선택된 행에서 X칸 아래에 있는 행을 선택합니다... programmers.co.kr import java.util.Stack; class Solution { public String solution(int n, int k, String[] cmd)

Naver Blog

[Java] 신고 결과 받기

https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 ... programmers.co.kr 문제 설명 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한

Naver Blog

[Java] 프로그래머스 여행경로

https://programmers.co.kr/learn/courses/30/lessons/43164?language=java 코딩테스트 연습 - 여행경로 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다. tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다. 주어진 항공권은 모두 사용해야 합니다. 만일 가능한 경로가 2개 이상... programmers.co.kr 문제 설명 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로

Naver Blog

[Java] 프로그래머스 전화번호 목록

https://programmers.co.kr/learn/courses/30/lessons/42577?language=java 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_b... programmers.co.kr 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영

Naver Blog

[Java] 프로그래머스 위장

https://programmers.co.kr/learn/courses/30/lessons/42578?language=java 코딩테스트 연습 - 위장 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은... programmers.co.kr 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠

Naver Blog

[Java] 음료수 얼려 먹기

N x M 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다. 구멍이 뚫려 있는 부분끼리 상, 하, 좌, 우로 붙어있는 경우 서로 연결되어 있는 것으로 간주한다. 이때 얼음 틀의 모양이 주어졌을 때 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하시오. 아래의 예시에서는 총 3개의 아이스크림이 생성된다. 4 5 00110 00011 11111 00000 결과 : 3 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 입력 조건 : 첫 번째 줄에 얼음 틀의 세로 길이 N과 가로길이 M이 주어진다. (1 <= N,M <= 1,000) 두 번째 줄부터 N + 1 번째 줄까지 얼음 틀의 형태가 주어진다. 이때 구멍이 뚫려있는 부분은 0, 그렇지 않은 부분은 1이다. 출력 조건 : 한 번에 만들 수 있는 아이스크림의 개수를 출력한다. import java.util.*; public class Main { static in

Naver Blog

[Java] 미로 탈출

N x M 크기의 직사각형 형태의 미로가 있다. 미로에는 여러마리의 괴물이 있어 이를 피해 탈출해야 한다. 시작 위치는 (0, 0)이고 미로의 출구는 (N - 1, M - 1)에 존재하며 한번에 한 칸씩 이동할 수 있다. 0은 괴물이 있는 부분, 1은 괴물이 없는 부분이다. 미로는 반드시 탈출할 수 있는 형태로 제시된다. 이때 탈출하기 위해 움직여야 하는 최소 칸의 개수를 구하시오. 칸을 셀 때는 시작 칸과 마지막 칸을 모두 포함해서 계산한다. 입력 조건 : 첫째 줄에 두 정수 N, M(4 <= N, M <= 200)이 주어진다. 다음 N개의 줄에는 각각 M개의 정수(0 혹은 1)로 미로의 정보가 주어진다. 각각의 수들은 공백 없이 붙어서 입력으로 제시된다. 또한 시작 칸과 마지막 칸은 항상 1이다. 출력 조건 : 첫째 줄에 최소 이동 칸의 개수를 출력한다. 입력 예시 : 5 6 101010 111111 000001 111111 111111 출력 예시 : 10 import java.

Naver Blog

[Java] 상하좌우

여행가 A는 N x N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 x 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1, 1) 이며, 가장 오른쪽 아래 좌표는 (N, N)에 해당한다. 여행가 A는 상, 하, 좌, 우 방향으로 이동할 수 있으며 시작 좌표는 항상 (1, 1)이다. 우리 앞에는 여행가 A가 이동할 계획이 적힌 계획서가 놓여있다. 계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L, R, U D 중 하나의 문자가 반복적으로 적혀있다. 각 문자의 의미는 다음과 같다. L : 왼쪽으로 한 칸 이동 R : 오른쪽으로 한 칸 이동 U : 위로 한 칸 이동 D : 아래로 한 칸 이동 이때 여행가 A가 N x N 크기의 정사각형 공간을 벗어나느 움직임은 무시된다. 예를 들어 (1, 1)의 위치에서 L혹은 U를 만나면 무시된다. 다음은 N = 5 인 지도와 계획서이다. R -> R -> R -> U -> U -> D (1,1 ) (1, 2) (1, 3) (1,

Naver Blog

[Java] 시각

정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다. 00시 00분 03초 00시 13분 30초 반면에 다음은 3이 하나도 포함되어 있지 않으므로 세면 안 되는 시각이다. 00시 02분 55초 01시 27분 45초 입력 조건 : 첫째 줄에 정수 N이 입력된다. (0 <= N <= 23) 출력 조건 : 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 출력한다. 입력 예시 : 5 출력 예시 : 11475 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.n

Naver Blog

[Java] 프로그래머스 단어 변환

https://programmers.co.kr/learn/courses/30/lessons/43163?language=java 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변... programmers.co.kr 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장

Naver Blog

[Java] 백준 10814 나이순 정렬

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 10814번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 나이순 정렬 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 3 초 256 MB 61557 26410 20043 42.103% 문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름... www.acmicpc.net import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(Str

Naver Blog

[Java] 백준 11651 좌표 정렬하기 2

https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 11651번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 좌표 정렬하기 2 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 32344 21470 18158 68.125% 문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 x i 와 y i 가 주어진다. (-100,000 ≤... www.acmicpc.net import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(

Naver Blog

[Java] 백준 18870 좌표 압축

https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 18870번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 좌표 압축 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 512 MB 20946 9159 6932 41.949% 문제 수직선 위에 N개의 좌표 X 1 , X 2 , ..., X N 이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. X i 를 좌표 압축한 결과 X' i 의 값은 X i > X j 를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X 1 , X 2 , ..., X N 에 좌표 압축을 적용한 결과 X' 1 , X' 2 , ..., X' N... www.acmicpc.net import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { public st

Naver Blog

[Java] 큰 수의 법칙

문제 : 큰 수의 법칙은 N개의 숫자가 존재하는 하나의 배열이 주어졌을 때, 해당하는 수들 중 M번 더하여 가장 큰 수를 만드는 법칙이다. 단, 특정 인덱스에 해당하는 수가 K번을 초과하여 더해질 수는 없다. 서로 다른 인덱스에 해당하는 수가 같은 경우에는 두 수를 다른 수로 간주한다. 5개의 숫자가 존재하는 {2, 4, 5, 4, 6} 배열이 있을 경우 M은 8이고 K는 3일 때, 큰 수의 법칙을 적용하여 가장 큰 수를 만든다면 : 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5 = 46이 된다. 입력 조건 : 첫째 줄에 N(2 <= N <= 1,000), M(1 <= M <= 10,000), K(1 <= k <= 10,000)의 자연수가 주어지며, 각 자연수는 공백으로 구분한다. 둘째 줄에 N개의 자연수가 주어진다. 각 자연수는 공백으로 구분한다. 단, 각각의 자연수는 1이상 10,000 이하의 수로 주어진다. 입력으로 주어지는 k는 항상 M보다 작거나 같다. 출력 조건 :

Naver Blog

[Java] 가장 큰 수

https://programmers.co.kr/learn/courses/30/lessons/42746?language=java 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numb... programmers.co.kr 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면

Naver Blog

[Java] 프로그래머스 H-index

https://programmers.co.kr/learn/courses/30/lessons/42747?language=java 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과 1 에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n 편 중, h 번 이상 인용된 논문이 h 편 이상이고 나머지 논문이 h번 이하 인용되었다면 h 의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성... programmers.co.kr 문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따

Naver Blog

[Java] 프로그래머스 K번째수

https://programmers.co.kr/learn/courses/30/lessons/42748?language=java 코딩테스트 연습 - K번째수 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명... programmers.co.kr 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6,

Naver Blog

[Java] 백준 11053 가장 긴 증가하는 부분 수열

https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 11053번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 가장 긴 증가하는 부분 수열 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 88715 34639 22704 37.130% 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = { 10 , 20 , 10, 30 , 20, 50 } 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N ... www.acmicpc.net import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String args []) { Scann

Naver Blog

[Java] 백준 1912 연속합

https://www.acmicpc.net/problem/1912 1912번: 연속합 1912번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 연속합 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 (추가 시간 없음) 128 MB 92251 30817 21319 32.207% 문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 ... www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String args []) { Scanner sc = new Scanner(System.in); int n =

Naver Blog

[Java] 백준 2750 수 정렬하기

https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 2750번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 수 정렬하기 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 104085 59131 40723 58.235% 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 ... www.acmicpc.net import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String args []) { Scanner sc = new

Naver Blog

[Java] 백준 2751 수 정렬하기 2

https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 2751번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 수 정렬하기 2 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 256 MB 154904 42120 28734 30.000% 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬... www.acmicpc.net import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { public static void main

Naver Blog

[Java] 백준 1427 소트인사이드

https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 1427번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 소트인사이드 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 45487 27935 23505 61.875% 문제 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 예제 입력 1 복사 2143 예제 출력 1 복사 4321 예제 입력 2 ... www.acmicpc.net import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { public static void main(S

Naver Blog

[Java] 백준 11650 좌표 정렬하기

https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 11650번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 좌표 정렬하기 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 60472 29106 22111 48.054% 문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 x i 와 y i 가 주어진다. (-100,000 ≤ x... www.acmicpc.net import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String args []) { Scanner sc =

Naver Blog

[Java] 백준 1181 단어 정렬

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 1181번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 단어 정렬 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 256 MB 73450 30243 22483 40.307% 문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길... www.acmicpc.net import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String

Naver Blog

[Java] 백준 11055 가장 큰 증가 부분 수열

https://www.acmicpc.net/problem/11055 11055번: 가장 큰 증가 부분 수열 11055번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 가장 큰 증가 부분 수열 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 30101 13668 10868 45.255% 문제 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수열은 A = { 1 , 100, 2 , 50 , 60 , 3, 5, 6, 7, 8} 이... www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String args []) { Scanner sc = new Scanner(System.

Naver Blog

[Java] 백준 1890 점프

https://www.acmicpc.net/problem/1890 1890번: 점프 1890번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 점프 다국어 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 32144 9669 7224 28.814% 문제 N×N 게임판에 수가 적혀져 있다. 이 게임의 목표는 가장 왼쪽 위 칸에서 가장 오른쪽 아래 칸으로 규칙에 맞게 점프를 해서 가는 것이다. 각 칸에 적혀있는 수는 현재 칸에서 갈 수 있는 거리를 의미한다. 반드시 오른쪽이나 아래쪽으로만 이동해야 한다. 0은 더 이상 진행을 막는 종착점이며, 항상 현재 칸에 적혀있는 수만큼 오른쪽이나 아래... www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String args []) { Scanner sc = new Scanner(System.in); int N =

Naver Blog

[Java] 9465 스티커

https://www.acmicpc.net/problem/9465 9465번: 스티커 9465번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 스티커 다국어 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 43400 19963 13364 47.221% 문제 상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려고 한다. 상냥이가 구매한 스티커의 품질은 매우 좋지 않다. 스티커 한 장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 즉, 뗀 스티커의 ... www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String args []) { Scanner sc = new Scanner(System.in); int T =

Naver Blog

[Java] 10989 수 정렬하기 3

https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 복사 10 5 2 3 1 4 2 3 5 1 7 예제 출력 1 복사 1 1 2 2 3 3 4 5 5 7 출처 문제를 만든 사람: baekjoon 데이터를 추가한 사람: cgiosy 문제의 오타를 찾은 사람: joonas 시간 제한 Java 8: 3 초 Java 8... www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public cla

Naver Blog

[Java] 백준 2108 통계학

https://www.acmicpc.net/problem/2108 2108번: 통계학 문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어... www.acmicpc.net import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Map; i

Naver Blog

[Java] 백준 7568 덩치

https://www.acmicpc.net/problem/7568 7568번: 덩치 문제 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165) 라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없... www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String args []) { Scanner sc = new Scanner(System.in); int N =

Naver Blog

[Java] 백준 1018 체스판 다시 칠하기

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 따르면 체스판을 색칠하는 경우는 두 가지뿐이다. 하나는 맨 왼쪽 위 칸이 흰색인 경우, 하나... www.acmicpc.net import java.util.Scanner; public class Main { static int N; static int M; static char[][] arr; public static void main(String

Naver Blog

[Java] 백준 1436 영화감독 숌

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 문제 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀... www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String args []) { Scanner sc = new Scanner(System.in); int

Naver Blog

[Java] 백준 2407 조합

https://www.acmicpc.net/problem/2407 해당 문제는 일반적인 조합 문제와 동일하지만 출력 범위가 int와 long값을 넘어가기 때문에 BigInteger를 사용해주어야 한다. 조합문제 풀이는 아래 포스팅을 참고 ! ! ㅎㅎ 관련 조합 문제 풀이 참고 : https://blog.naver.com/khk990/222581957253 테스트 케이스에는 출력이 제대로 됐지만 틀렸다고 해서 질문을 읽어보니까 범위가 넘어서 BigInteger를 써야한다고 했다. 첨 써보는거라 사용법도 찾아보고 하느라 문제 푸는게 조금 늦어짐,,

Naver Blog

[Java] 백준 11727 2xn 타일링 2

https://www.acmicpc.net/problem/11727 2xn 타일링 1과 동일한 조건에 2x2타일만 추가된 문제. 기존 문제에서 dp 식은 dp[i] &#x3D; dp[i - 1] + dp[i - 2]; 가 된다. 이 문제에서는 해당 식에서 조금만 수정만 해주면 답을 얻을 수 있다. 기존의 2x1 타일을 사용하기 위해서는 항상 2x2크기 만큼의 공간이 필요했다. ( &#x3D; 2x1 타일 2개 사용) -&#62; 높이는 항상 2로 고정되어 있기 때문에 높이가 1인 2x1타일을 사용하면 나머지 높이 1만큼의 공백을 채우기 위함을 뜻함. 따라서 새로 추가된 2x2 타일은 기존의 2x1타일을 사용하는 경우와 동일한 경우의 수가 발생하게 된다. 즉, dp[i] &#x3D; dp[i - 1] + dp[i - 2] * 2 가 된다. 2xn 타.......

Naver Blog

[Java] 백준 2579 계단 오르기

https://www.acmicpc.net/problem/2579 이번 문제는 좀,, 어려웠음.. 계단을 어떻게 올라갈지만 파악한다면 쉬운 문제가 될 수도 있다. 우선 계단을 올라갈 때 연속된 3칸은 밟지 못하는 전제하에 한칸 이전에서 올라갈지, 두칸 이전에서 올라갈지 2가지 경우로 나눠서 생각해야한다. 1. i - 1 칸에서 i 칸으로 올라갈 때 : 해당 경우는 i - 1 과 i 가 연속적이기 때문에 반드시 i-3칸으로부터 올라와야 한다. dp[i] &#x3D; dp[i - 3] + arr[i - 1] + arr[i]; i - 3칸 dp 값 i - 1칸 값 i 칸 값 2. n-2 칸에서 n칸으로 올라갈 때 : 연속적인 칸을 밟지 않기 때문에 이전에 밟은 칸은 고려해주지 않아도 된다. dp[i] &#x3D; dp[i - 2] + arr[i]; i.......

Naver Blog

[Java] 자바 2789 블랙잭

https://www.acmicpc.net/problem/2798 브루트포스 문제라 코드를 간결하게 쓰기보다는 어떻게든 풀어보자하고 풀어봄 ㅎㅎ 브론즈 문제인만큼 엄청 쉬웠고 바로 정답!

Naver Blog

[Java] 백준 2231 분해합

https://www.acmicpc.net/problem/2231 문제는 간단했는데 바로 정답을 못 맞춘 이유.. 1의 생성자는 1이 아니다. 이 문제는 오류처리만 제대로 해주면 아주 쉽게 풀 수 있다.

Naver Blog

[Java] 3085 사탕 게임

https://www.acmicpc.net/problem/3085 브루트포스 문제인 만큼 사탕을 하나 바꾸고 전체를 탐색한 뒤 최댓값을 구하고 다시 사탕을 변경 ,, 이런 방식으로 반복문을 돌며 전체를 처리해주면 된다.

Naver Blog

[Java] 2606 바이러스

https://www.acmicpc.net/problem/2606 DFS의 기본만 알고 있다면 간단하게 풀 수 있는 문제!

Naver Blog

[Java] 2839 설탕 배달

https://www.acmicpc.net/problem/2839 점화식을 직접 손으로 써봤는데 딱히 규칙..?은 없었음. 물론 있을수도 있지만 내가봤을땐 그랬음 ㅎ,, 그래서 연산의 순서를 정하기로 결정. 1. 5의 배수를 걸러냄. 2. 5 * n + 3 * n 으로 이뤄진 수를 걸러냄. 2 - 1. 위의 경우에서 temp에 해당하는 dp가 이미 계산 돼 있다면 해당 dp값 사용. 2 - 2. 위의 경우에서 temp에 해당하는 dp가 없고, 처음 계산한다면 끝까지 연산. 3. 3의 배수를 걸러냄. 이렇게하면 dp를 이용하면서 최솟값을 얻어낼 수 있다. 다른 코드들보다 내 코드가 좀 길긴하지만 난,, 내 코드가 젤 이해하기 쉬우니까 ^^;;

Naver Blog

[Java] 백준 14226 이모티콘

https://www.acmicpc.net/problem/14226 여러 코드를 참조 했지만 복사를 할 때엔 어떤 조건도 추가하지 않는다. 그래서 복사할 때에도 조건을 추가해봤는데 통과가 된다. 근데 시간이 아주 조금 줄어든걸 보면 굳이 필요가 없는 코드인지 ..?? 복사에서 방문 조건으로 걸러주지 않아도 어차피 붙여넣기 할 때 방문한 곳은 연산을 하지 않기 때문에 그런걸까? 조건이 여러개인 문제를 보면 자꾸 놓치게 된다,, 집중력 부족인가 ㅎㅎ,,

Naver Blog

[Java] 백준 10870 피보나치 수 5

https://www.acmicpc.net/problem/10870 피보나치 문제는 많이 풀어봤지만 dp를 적용해서 푸는건 첨이라 약간 어색? 했다 ㅋㅋ 재귀에서 메모제이션으로만 바꾼건데 ㅎ

Naver Blog

[Java] 백준 2748 피보나치 수 2

https://www.acmicpc.net/problem/2748 n이 90보다 작거나 같은수로 주어지기 때문에 int가 아닌 long으로 처리를 해줬다.

Naver Blog

[Java] 백준 1010 다리 놓기

https://www.acmicpc.net/problem/1010 점화식을 찾으려고 이것저것 써보며 계산했는데 못찾음 ㅋㅋ,, 점화식을 내가 찾고싶다고 찾을 수 있는건가..?? 힝^^,, 결국 어떻게 푸는건지 찾아봤다 ㅋ; 이 문제는 조합을 사용해야한다. 따라서 조합의 기본 개념을 알고 있어야 하며, 코드로 작성할 수 있어야한다. 조합 기본 식 : nCr &#x3D; n-1Cr-1 + n-1Cr nCr 에서 n과 r 값이 동일하거나 r이 0일 경우는 조합의 값이 1이 된다. -&#62; 재귀를 멈추는 조건으로 사용 : nCn &#x3D; nC0 &#x3D; 1 조합에서는 중복을 허용하지 않는다. : 문제에서 다리가 겹치면 안된다고 했으므로 (1, 2, 5)는 가능하고 (1, 5, 2)는 불가능한 경우가 된다. 하지만 조.......

Naver Blog

[Java] 백준 9095 1, 2, 3 더하기

https://www.acmicpc.net/problem/9095 dp문제를 풀면 점화식을 찾으려고 애썼지만 항상 실패했었다. 하지만 이 문제는 찾음 ^_^ 4 이상의 수(n)의 dp값은 dp[i - 1] + dp[i - 2] + dp[i - 3]로 구할 수 있다. 따라서 이문제는 3까지의 dp값을 구하고 반복문 내에서 해당 점화식을 써주면 끝! 쉬운 문제였지만 dp문제를 해결했기 땜에 기분이 좋음 ㅎㅎ,,,

Naver Blog

[Java] 백준 11654 아스키코드

https://www.acmicpc.net/problem/11654 문자에서 아스키코드 값을 알고 싶다면 해당 문자에서 0을 빼주면 된다.

Naver Blog

[Java] 16916 부분 문자열

https://www.acmicpc.net/problem/16916 kmp.. 어렵다.. 이론 겨우 이해하면 코드가 이해가 안되고 코드 겨우 이해했어도 나중에 또 보면 또 모름,, ㅋ

Naver Blog

[Java] 1701 Cubeditor

https://www.acmicpc.net/problem/1701 KMP 알고리즘은 getTable() 구조만 제대로 알고있다면 70프로는 해결했다고 봐도 될 것 같다. 물론 문제가 어렵다면 70프로까지는 아니더라도 ㅎㅎ 여튼 저 구조에서 변화를 조금씩 주면 문제를 풀 수 있다는 생각이 들었음. 저 구조를 익혀야겠다. 안되면,, 억지로 암기라도 ^^

Naver Blog

[Java] 1789 수들의 합

https://www.acmicpc.net/problem/1789 i가 1일 때부터 순서대로 더해주고 sum 값이 S를 넘을 때 break; 해준다. 그리고 i - 1을 해주면 끝. 만약 S가 7일 때, 1, 2, 3, 4 까지 더해주면 sum은 10이 되면서 break 된다. 이때 i값은 4가 됨. 이후에는 넘친 값 3을 sum에서 빼주면 S인 7이 될 수 있음. 때문에 i에서 1을 뺀 값인 3이 N이 된다.

Naver Blog

[Java] 1260 DFS와 BFS

https://www.acmicpc.net/problem/1260 bfs 함수 가 1만 출력돼서 왜그런가 했더니 visit 함수를 초기화 안해줘서 생긴 문제 ㅋ 사소한건데 놓쳐서 깨나 헤맸다. 이 문제로 dfs와 bfs의 기본은 확실히 잡을 수 있는것 같다.

Naver Blog

[Java] 1303 전쟁 - 전투

https://www.acmicpc.net/problem/1303 답이 제대로 나왔는데 자꾸 런타임에러가 떠서 질문글을 봤더니 N, M을 M, N으로 해야 된다고 해서 고쳤더니 맞았다. N과 M을 x, y라고 생각해서 발생한 실수! 이 문제는 BFS와 DFS를 모두 사용해 풀 수 있다고 한다. 하지만 난 DFS를 더 선호하는 편이라 DFS로 풀었다. ㅎ

Naver Blog

[Java] 16953 A -&gt; B

https://www.acmicpc.net/problem/16953 숨바꼭질 문제처럼 풀었더니 메모리 초과가 났다... 알고보니 (* 2) 나 (* 10 + 1) 과 같은 연산을 했을 때 int 범위를 벗어나기 때문이다. 그래서 long으로 고치고 이것저것 손보고 맞았습니다를 받을 수 있었다. BFS라서 boolean형의 visit배열을 선언했었는데 필요 없는 작업이었다. 대신 Pair라는 추가적 클래스를 선언해 num과 count를 관리해주어야했다. 아님 매 연산마다 count가 1씩 증가해 제대로된 연산값을 얻을 수 없기 때문!

Naver Blog

[Java] 12851 숨바꼭질 2

https://www.acmicpc.net/problem/12851 숨바꼭질 1과 비슷한 것 같지만 많이 달랐다. 방문했던 곳도 다시 방문할 수 있고 N과 K가 같은 경우도 비교해줘야 함!

Naver Blog

[Java] 2178 미로 탐색

https://www.acmicpc.net/problem/2178 이번 문제는 BFS 문제를 계속해서 풀다보니 간단하게 풀 수 있었다. 하지만 답이 한번에 나오지 않았는데 BFS 를 수행하는 아래 코드에서 count[x][y] &#x3D; count[p.x][p.y] + 1; 이 부분을 count[x][y] &#x3D; ++count[p.x][p.y] ; 이렇게 작성해버려서 오답이 나왔었다. 잘못 작성한 코드처럼 코드를 짜면 최소경로가 아닌 잘못된 길을 들었을 때, 다시 돌아가게 되면 count가 제대로 측정되지 못한다. 이동한 좌표인 x, y의 count 값을 증가해야 하는데 기존의 p.x, p.y의 count값을 증가해버리는것. 쉬운 문제였지만 혼자 풀어서 뿌듯 ^_^

Naver Blog

[Java] 13549 숨바꼭질 3

https://www.acmicpc.net/problem/13549 메모리 초과도 계속나고 그냥 계~~~속 틀린 문제. 숨바꼭질 3은 이전 숨바꼭질 문제들과 달리 (x 2)에 해당하는 경우를 (+ 1), (- 1)보다 먼저 처리해줘야 한다. 입력이 1 2 일 때, 결과값은 (+ 1)로 처리한 1이 아닌 (x 2)로 처리한 0이 되어야 한다. 따라서 if문을 작성할 때 가장 위쪽에 작성해주어야 한다. 또한 도착지에 방문했을 경우 현재 q가 가지고 있는 시간을 출력하고 종료하는 것이 아니라, 각 경우의 시간을 비교해가며 최솟값으로 변경해주어야 한다. 숨바꼭질 시리즈 문제가 조금씩 다른데 이전 시리즈를 풀었다고 해서 꼭 다음 문제를 맞추는건 아닌듯,,, ㅜ

Naver Blog

[Java] 13913 숨바꼭질 4

https://www.acmicpc.net/problem/13913 자신의 부모를 저장하는 함수를 이용해 경로를 출력. 비슷한 문제를 계속 푸니까 더 헷갈린다. 숨바꼭질 이제 끝..

Naver Blog

[Java] 문자열 뒤집기

자바에서 문자열을 뒤집을 땐 기본적인 방법으로 for문 등의 반복문을 이용하여 문자열을 뒤집는다. 다음 ...

Naver Blog

[Java] 1916 최소비용 구하기

https://www.acmicpc.net/problem/1916 다익스트라는 처음이라 여기저기 참고하면서 문제 풀기,,, 어렵다 ㅎ;;

Naver Blog

[Java] 11657 타임머신

https://www.acmicpc.net/problem/11657 출발지, 도착지, 가중치를 따로 관리하기 보다는 Edge라는 클래스를 작성해서 코드를 짜는게 훨씬 간편하게 간결한 코드를 짤 수 있었다. 앞으로 벨만포드 문제는 Edge 클래스를 만드는걸 기본으로 해야겠다. 벨만포드 문제가 처음엔 너무 복잡해서 감도 안잡혔는데 이문제 저문제 풀이를 훑어보다보니 어느정도 감을 익힐 수 있었다. 바로바로 코드를 작성할 수 있을 때까지 홧팅 ^_^

Naver Blog

[Java] 10775 공항

문제가 무슨말인지 한참을 읽어봤다,, 가끔 백준에서 제공하는 문제들을 보면 문제 자체가 이해가 안되는 경우가 종종있다,,, 번역체 처럼 ,,, 그럼 문제 풀때도 더 어렵게 느껴짐 ㅋ,,,

Naver Blog

[Java] 1774 우주신과의 교감

https://www.acmicpc.net/problem/1774 최소 스패닝트리 문제에 사용되는 간선 관리 Edge 클래스 말고 Pos클래스도 추가되니까 꽤 헷갈렸다 ㅋㅋ

Naver Blog

[Java] 7795 먹을 것인가 먹힐 것인가

https://www.acmicpc.net/problem/7795 투포인터 문제를 계속 다뤄서 쉽게 풀었지만 계속 틀렸습니다가 나와서 짜증났던 문제.. 정렬이 틀린건지 비교문이 틀린건지 다른 코드들을 찾아서 비교해도 왜 틀렸는지 알 수 없었다,, 알고보니 각각의 테스트 케이스마다 N과 M을 새로 입력 받고 그에 해당하는 배열을 새로 선언해야 하는데 그 코드를 반복문 안에 넣지 않아서 생긴 문제.. 우연하게도,,, 백준에서 제공하는 테스트 케이스는 첫번째 테스트 케이스가 두번째 테스트 케이스보다 배열의 크기가 더 커서 오류가 나지 않고 계속 돌아갔던 것,, 이게 날 더 힘들게 했다^^,,, 오류라도 났으면 빨리 알아차리고 고쳤을텐데 ㅎ 진짜 멍청했다 ,,.......

Naver Blog

[Java] 팰린드롬 찾기

&#x27;abba&#x27; 와 같이 뒤집어도 동일한 문자가 되는 문자를 팰린드롬 이라고 한다. 아래의 코드는 문자가 팰린드롬이 아닐 경우 FALSE 를 출력하고 맞을 경우 TRUE 를 출력하는 코드이다. 두번째 코드는 동일한 문제를 StringBuilder의 reverse() 함수를 이용하여 반복문 없이 팰린드롬을 찾아내는 코드이다. 세번째 코드도 동일한 문제이지만 알파벳의 대소문자 구분이 필요하지 않는 경우의 코드이다. 문자를 비교할 때 단순 equals()가 아닌 equalsIgnoreCase() 로 비교하면 된다.

Naver Blog

[Java] 백준 2003 수들의 합2

https://www.acmicpc.net/problem/2003 무난한 투포인터 문제이다. 그리 복잡하지 않고 기본에 충실한 문제. 아래는 내가 작성한 또다른 투포인터문제 ㅎㅎ 투포인터문제에 대해 약간의 ? 설명이 필요하다면 아래의 글을 읽어보세요! https://blog.naver.com/khk990 조건을 설정하는게 아직까지 매끄럽진 못하지만 투포인터에 대해 어느정도 파악을 했으니 반복하다보면 투포인터 문제도 지금보다는 간단하게 풀 수 있을 것 같다 ㅎㅎ

Naver Blog

[Java] 2470 두 용액

https://www.acmicpc.net/problem/2470 투포인터를 사용하는 간단한 문제 골드 5이지만 투포인터 사용법을 아다면 생각보다 쉽게 풀 수 있다 ㅎ

Naver Blog

[Java] 영어 알파벳 뒤집기

단순히 문자를 뒤집고 싶을 땐 반복문이나 StringBuilder를 사용하면 된다. 하지만 영어 알파벳과 다른 문자들을 구분해서 문자를 뒤집고 싶다면 Character.isAlphbetic(문자) 를 사용해 해당 문자가 알파벳인지 확인하고 문자를 뒤집으면 된다. 아래 코드는 알파벳과 알파벳이 아닌 문자들을 구분하여 양 끝을 가리키는 두개의 idx 의 값이 모두 알파벳일 경우에만 서로의 문자를 바꾸는 문제이다.

Naver Blog

[Java] 백준 14719 빗물

https://www.acmicpc.net/problem/14719 현재 배열의값을 기준으로 왼쪽과 오른쪽에서 가장 높은 기둥을 구해 빗물의 양을 구하는 문제. 문제를 한번에 풀 수는 없었지만 하나하나씩 풀다보니 이런문제는 이렇게 푸는거구나,, 하고 느끼게 된다 ㅎㅎ 더 노력하쟈!

Naver Blog

[Java] 백준 1931 회의실 배정

https://www.acmicpc.net/problem/1931 그리디 알고리즘 하면 회의실 배정문제, 거스름 돈 등의 문제들이 거론된다. 해당 문제는 회의실 배정문제. 회의실 배정문제를 그리디 스럽게 풀기 위해서는 회의 끝나는 시간을 기준으로 오름차순 정렬을 하고, 만약 끝나는 시간이 동일하다면 시작하는 시간이 이른 회의를 선택하면 된다. 문제 해결법은 알고 있었지만 찾아보니 이차원 배열은 단순 sort 를 사용하지 않고 sort() 내부에 새로운 정렬 기준인 compareTo 를 따로 정의해 사용해야 했다. compareTo 의 사용은 꽤 오래전이라 기억이 나질 않아 다시 또 검색 ㅎㅎ 코딩을 끝내고 정답이라고 생각했는데 자꾸 오류가 나서 봤더니 어이없게도 이.......

Naver Blog

[Java] 백준 5585 거스름돈

https://www.acmicpc.net/problem/5585 그리디 알고리즘의 잔돈 구하는 문제 현재 금액을 잔돈으로 나누었을 때의 몫은 잔돈의 개수가 되고 나머지 금액은 새로운 현재 금액이 된다. 이런 식으로 금액이 0이 될 때까지 나눠주면 최소한의 잔돈의 개수를 구할 수 있다. 이 문제를 처음 접했던 예전은 해당 문제가 그리디 알고리즘을 적용한 문제인지 몰랐었다 ㅋㅋ 여튼 예전에도 많이 풀어봤던 문제 형태라 간단한 문제였다!

Naver Blog

[Java] 백준 13305 주유소

https://www.acmicpc.net/problem/13305 그리디 알고리즘을 적용한 문제이다. 모든 경우를 생각해서 최솟값을 찾아야 하나 싶지만 간단하게 답을 구할 수 있다. 현재 기름값이 현재 최소 기름값보다 적을 때만 최솟값을 현재 기름값으로 갱신해서 계산해주면 된다. 그렇지 않다면 단순히 계산해주면 되고 이렇게 할 경우 기름값을 모두 적용해 계산해보지 않고도 값을 구할 수 있다.

Naver Blog

[Java] 백준 1806 부분합

https://www.acmicpc.net/problem/1806 투포인터의 개념을 처음 접해봐서 처음에는 일단 내마음대로 풀어보기로 했다. 일반적인 풀이로 풀었을 때는 결과는 제대로 나왔지만 답은 틀렸다고 나왔었다. 배열을 내림차순으로 정렬하고 순서대로 더해가며 S 이상이 될 때까지 길이를 체크하는 것. 가장 짧은 길이를 구하는 것이기 때문에 이 방법으로 풀면 될거라고 생각했는데 어디서 틀린건진 잘 모르겠다. 그래서 투포인터에 대해 여기저기 돌아다니며 공부하고 문제를 다시 풀어서 성공,,! 문제의 핵심은 1. 두개의 포인터인 시작 포인터와 끝 포인터(start, end)를 잡는다. 2 - 1. 합이 S 이상인 경우에는 조건을 만족했기 때문에 시작 포인터와.......

Naver Blog

[Java] 백준 2504 괄호의 값

https://www.acmicpc.net/problem/2504 오랜만의 스택이라 재미있었다. 물론 문제는 재미있지 않았다. 머릿속으론 이렇게 하면 되겠지 하고 코드를 짜봐도 맘처럼 풀리지가 않았다. 그래서 다른 분들은 어떻게 코드를 짰나 찾아보다 가장 이해하기 쉬웠던 코드를 읽어보고 따라 짜 보았다. [백준]2504 - 괄호의 값 : 네이버 블로그 (naver.com) 참고한 블로그이다. 언제쯤 생각하는데로 바로바로 답을 만들어낼 수 있을까.. 문제가 조금 어려워 졌다고 바로 헤매는걸 보니 현타가 온다 ㅎㅎ,,, 그래도 꾸준히 풀어나가기 !!

Naver Blog

[Java] 백준 1463 1로 만들기, 다이나믹 프로그래밍

다이나믹 프로그래밍 : 메모리를 적절히 사용하여 수행시간의 효율성을 향상시키는 방법. 이미 계산한 결과...

Naver Blog

[Java] 백준 11726 2xn 타일링, 다이나믹 프로그래밍

https://www.acmicpc.net/problem/11726 처음 다이나믹 프로그래밍을 풀 때와는 달리 배열의 크기를 정하거...

Naver Blog

[Java] 백준 2501 약수 구하기

https://www.acmicpc.net/problem/2501 이 문제는 쉬운 브론즈 문제. 바로 정답을 맞출 수 있었지만 코드의...

Naver Blog

[Java] 백준 2609 최대공약수와 최소공배수

https://www.acmicpc.net/problem/2609 우선 맘대로 코딩한 코드! for (int i &#x3D; 1; i &lt;&#x3D; (n...

Naver Blog

[Java] 백준 3460 이진수

https://www.acmicpc.net/problem/3460 우선 혼자 코딩을 끝내고 다른 코드들을 찾아보니 자바에는 10진수...

Naver Blog

[Java] 백준 10818 최소, 최대

https://www.acmicpc.net/problem/10818 배열을 사용해 Arrays.sort 함수로 정렬 후, idx값이 0 과 N-1 ...

Naver Blog

[Java] 백준 2460 지능형 기차 2

https://www.acmicpc.net/problem/2460 이차배열을 이용하여 [n][0] 이면 내리는 사람이기 때문에 전체 인...

Naver Blog

[Java] 백준 10870 피보나치 수 5

https://www.acmicpc.net/problem/10870 재귀를 배울 때 가장 먼저 만나게 되는 피보나치 수열 문제. 기본...

Naver Blog

[Java] 백준 2693 N번째 큰 수

https://www.acmicpc.net/problem/2693 Arrays.sort 함수로 정렬 후 3번째 큰 원소 출력! sort 함수덕에 ...

1 2 3 4