문제 두 종류의 부등호 기호 ‘’가 k 개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시된 부등호 순서열 A가 다음과 같다고 하자. A ⇒ 부등호 기호 앞뒤에 넣을 수 있는 숫자는 0부터 9까지의 정수이며 선택된 숫자는 모두 달라야 한다. 아래는 부등호 순서열 A를 만족시키는 한 예이다. 3 1 7 0 이 상황에서 부등호 기호를 제거한 뒤, 숫자를 모두 붙이면 하나의 수를 만들 수 있는데 이 수를 주어진 부등호 관계를 만족시키는 정수라고 한다. 그런데 주어진 부등호 관계를 만족하는 정수는 하나 이상 존재한다. 예를 들..
BaseActivity 개발을 하다보면 모든 Activity에서 공통적으로 만들어줘야하는 변수들이 있다 이 변수들을 파일마다 만들어주는 번거로운 과정을 생략하기 위해서 Base 패키지에 필수적인 내용이 들어있는 파일을 만들어놓고, Activity 등에서 해당 파일을 상속하여 사용한다 BaseActivity.kt 추상클래스로 정의되어있다 abstract로 정의된 변수인 layoutResID와 viewModel은 상속받은 activity에서 반드시 재정의 해줘야한다 layoutResID는 setContentView로 호출할 Layout 파일을 말한다 viewModel은 Activity에서 viewModel로 쓸 변수이다 abstract class BaseActivity : AppCompatActivity()..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문자열 s를 받아 아스키코드로 변환하여 n만큼 이동시킨 후 다시 문자열 형태로 출력해야한다 z를 넘어갈 경우 다시 a부터 시작하고, Z를 넘어갈 경우 다시 A부터 시작해야한다 char타입은 문자의 형태와 아스키코드의 숫자 형태 모두 표현이 가능하다 n 은 int 타입이므로 더한 후 형변환을 해줘야한다 문자열 문제에서 char 타입이 엄청 많이 쓰인다 더 익숙해져야겠다 처음에는 변수를 엄청 많이 써서 코드가 길었는데 통과한 후 코드를 정리하니 겹치는 변수가 많았다 변수를 남발하지 말아야겠다 코드 cl..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 배열의 들어가는 수가 여러개라 당황했었지만 BFS로 생각보다 간단하게 풀 수 있는 문제였다 색깔이 같은 부분만 count를 해줘야하므로 현재 탐색중인 노드와 다음에 탐색할 노드의 값이 같은지 비교한 후 큐에 넣어줘야한다 코드 class Soultion { static public int[] solution(int m, int n, int[][] picture) { int numberOfArea = 0; int maxSizeOfOneArea = 0; int[] answer = new int[2]; i..
문제 배열로 주어지는 N개의 수들의 최소공배수 구하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 최대공약수 : 여러 수들의 공통적인 약수 중 가장 큰 수 최소공배수 : 여러 수들의 공통적인 배수 중 가장 작은 수 최대공약수는 유클리드 호제법으로 구해야한다 (이건 그냥 이해하려고 하기보다는 외워야할 것 같다 (gcd 함수)) 최소공배수는 대상이 되는 두 수의 곱을 최대공약수로 나눈 수이다 (이것도 그냥 외우자..) 코드 public class SkillCheck_2_1 { static public int gcd(int a, int b) { // 최..
문제 프로그래머스 2019 카카오 개발자 겨울 인턴십 - 인형뽑기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 바구니에서는 가장 마지막에 들어간 인형이 계속해서 필요하기 때문에 stack으로 구현했다 checkBasket은 뽑은 인형을 바구니에 넣을때 실행하는 함수이다 moves 배열에 들어있는 순서대로 인형을 뽑은 후에는 해당 인형이 있던 자리를 0으로 바꿔줘야한다 해당 열에서 인형을 뽑았으면 다음 인형은 뽑지 못하게 하도록 break로 반복문을 나가줘야한다 터진 인형은 pop으로 사라진 인형 갯수의 2배이므로 count*2를 해야한다 코드 im..
문제 프로그래머스 2018 카카오 공채 - 비밀지도 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 배열로 입력받은 10진수들을 모두 2진수로 바꿔줘야한다 -> Integer.toBinaryString() 사용 두 개의 지도를 주어진 조건에 맞게 합쳐야하므로 OR 연산을 실행한다 -> arr1[i] | arr2[i] 그런데 2진수로 바꾸면서 1이 나오기 전의 0들은 사라져버리기 때문에 String.format을 사용해서 사라진 0들을 살려줘야한다 ⭐️map[i] = String.format("%" + n + "s", map[i]); -> n의 크기만큼..
문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다. 위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입력 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력..