Java
[백준]10158번 개미 - Java
문제 https://www.acmicpc.net/problem/10158 10158번: 개미 가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오 www.acmicpc.net 풀이 처음에는 아무 생각 없이 걍 시뮬로 하면 될 것 같았음. 그래서 했는데? 조졌다리 밑에 오답 코드처럼 노가다로 하다가 하면서도 뭔가 이상한 것 같았음 ㅋㅋㅋㅋ 근데 이미 한거 일단 제출해보자 하고 했는데 역시나 메모리 초과(사실 메모리 초과는 문제 풀면서 첨 보는거 같음) 그리고 문제 다시 봤는데 문제에서 w와 h는 자연수이며 범위는 2 ≤ w,h ≤ 40,000이다...
[백준]10157번 자리배정 - Java
문제 https://www.acmicpc.net/problem/10157 10157번: 자리배정 첫 줄에는 공연장의 격자 크기를 나타내는 정수 C와 R이 하나의 공백을 사이에 두고 차례대로 주어진다. 두 값의 범위는 5 ≤ C, R ≤ 1,000이다. 그 다음 줄에는 어떤 관객의 대기번호 K가 주어진다. www.acmicpc.net 풀이 1. 처음 방향(상)에서 범위를 벗어나면 방향이 바뀜(우) -> 암튼 상우하좌 로 방향이 바뀜 -> static으로 방향 벡터 설정 2. 문제에서 말이 되지 않는 케이스는 0을 출력하라고 함 -> 0을 출력 후 System.exit(0)으로 시스템 정상 종료 3. 범위를 벗어나거나 map[][] 안에서 0을 만나면 방향을 바꾸고 한칸 전진 시키고 다시 while문 4. ..
[Java]Comparable과 Comparator의 이해
Comparable과 Comparator 일단 둘 다 인터페이스(interface)임. 즉, Comparable 혹은 Comparator을 사용하고자 한다면 인터페이스 내에 선언된 메서드를 '반드시 구현' 해야함. Comparable 공식 문서 Comparable (Java Platform SE 8 ) 공식 API 문서임. Comparable을 보면 Comparable 인터페이스에는 compareTo(T o) 메서드 하나가 선언되어있는 것을 볼 수 있는데, 이 말은 만약 Comparable을 사용하고자 한다면 compareTo 메서드를 재정의(Override/구현)을 해주어야 한다는 것임. Comparator 공식 문서 Comparator (Java Platform SE 8 ) Comparator는 보면..
[백준]3109번 빵집 - Java
문제 https://www.acmicpc.net/problem/3109 3109번: 빵집 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 www.acmicpc.net 풀이 1. 파이프 설치 진행 방향(필요한 것만, 순서대로 -> 오른쪽 위 대각선, 오른쪽, 오른쪽 아래 대각선) 2. boolena 타입의 check[][] 배열로 다음 진행 방향에 파이프를 설치할 수 있는지 확인 3. 설치가 가능하면 설치하고 check배열을 true로 바꿔준 후 solution함수 재귀 호출 4. 마지막 열에 도착할 때마다 answer++ 코드 // 3109번 - 빵집 // https:/..
[Java]StringBuilder.setChar() 메서드
.setChar() 메서드 StringBuilder answer = new StringBuilder(phone_number); for(int i = 0; i < phone_number.length()-4; i++) { answer.setCharAt(i, '*'); } return answer.toString(); 인덱스에 해당하는 문자를 '*'로 바꿔줌 코딩테스트 연습 - 핸드폰 번호 가리기
[Java]배열의 복사(2차원 배열의 복사)
깊은 복사 1차원 배열의 깊은 복사의 경우 위에서 소개한 메서드를 사용하면 쉽게 복사가 가능함. 하지만 2차원 배열의 경우 위의 메서드를 활용해도 깊은 복사가 되지 않음. 그 이유는 위와 같은 2차원 배열의 구조 a[x][y]에서 배열을 복사하는 메서드를 사용하게 되면 y좌표를 가리키는 주소 값만 있는 a부분만 깊은 복사가 되고 값이 있는 a[x][y]는 깊은 복사가 되지 않음. 그렇기에 2차원 배열을 복사하기 위해서는 for문을 돌리면서 값이 있는 a[x][y]를 일일이 복사해주어야 함. 이중 for문 활용 public class Array_Copy{ public static void main(String[] args) { int a[][] = {{1,2,3},{4,5,6,},{7,8,9}}; int[..
[Java]배열의 복사(1차원 배열의 복사)
얕은 복사 public class Array_Copy{ public static void main(String[] args) { int[] a = { 1, 2, 3, 4 }; int[] b = a; } } = 연산자는 주소를 이어준다는 의미임. 해당 코드로 a의 배열을 b배열로 = 연산자를 활용하여 대입하면 깊은 복사가 되지 않고 얕은 복사가 됨. 그렇기에 b배열의 값을 수정하여도 a배열까지 같이 수정되어버리는 상황이 나옴. 이렇게 되면 사실상 배열을 복사하는 의미가 없음. 깊은 복사 public class Array_Copy{ public static void main(String[] args) { int[] a = { 1, 2, 3, 4 }; int[] b = new int[a.length]; for..
[Java]문자열 비교하기 == 와 equals()의 차이점
문자열 비교하기 == 와 equals()의 차이점 문자열 비교하기 == 와 equals()의 차이점 자바에서 일반적인 데이터 타입의 비교는 `==` 라는 연산자를 사용하여 비교함. 하지만 String 문자열의 값을 비교할 때에는 `equals()` 라는 메서드를 사용하여 비교함. `==` 연산자 public class compare { public static void main(String[] args) { String s1 = "abcd"; String s2 = new String("abcd"); if(s1 == s2) { System.out.println("두 개의 값이 같습니다."); }else { System.out.println("두 개의 값이 같지 않습니다."); } } } 결과: "두 개의 ..