(백기선 라이브 스터디)
💡 다음 주부터
- 과제 제출
- 테스트 코드를 무조건 작성해야 됨(TDD까진 아니어도 괜찮다)
- 1시까지 과제 제출
1. switch operator는 switch문이 아니다.
2. &&나 || 그리고 &와 | 차이점
&&나 ||는 한쪽을 만족하면 뒤에꺼를 확인하지 않는다.
&와 | 는 뒤에 꺼도 확인한다.
public class Main {
public static void main(String[] args) {
int i = 0;
int j = 0;
if (i++ == 0 || j++ == 0) {
System.out.println("Hello");
}
System.out.println(i); // 1
System.out.println(j); // 0
}
}
public class Main {
public static void main(String[] args) {
int i = 0;
int j = 0;
if (i++ == 0 | j++ == 0) {
System.out.println("Hello");
}
System.out.println(i); // 1
System.out.println(j); // 1
}
}
3. 중간값 구하기
public class Main {
public static void main(String[] args) {
// 중간값 구하기
int start = 2_100_100_000;
int end = 2_100_100_000;
int mid = (start + end) / 2; // 오버플로우 가능성이 있다.
System.out.println(mid);
//방법 1
int mid2 = start + (end - start) / 2;
System.out.println(mid2);
//방법 2 - 음수에서는 안된다.
int mid3 = (start + end) >>> 1;
System.out.println(mid3);
}
}
4. 문제) numbers라는 int형 배열이 있다. 해당 배열에 들어있는 숫자들은 오직 한 숫자를 제외하고는 모두 두 번씩 들어 있다. 오직 한 번만 등장하는 숫자를 찾는 코드를 작성하라.
TIP) intelliJ에서 itar / iter로 for문 자동완성 가능하다.
public class Main {
public static void main(String[] args) {
Main main = new Main();
int result = main.solution(new int[] {5, 2, 4, 1, 2, 4, 5});
System.out.println(result);
}
// TODO : XOR를 이용
// 5 ^ 0 = 5
// 5 ^ 5 = 0
// TODO
// 101 101
// 000 101
// --- ---
// 101 000
// 5 ^ 1 ^ 5 => ( 5 ^ 5) ^ 1 = 0 ^ 1 = 1
private int solution(int[] numbers) {
int result = 0;
for( int number : numbers) {
result ^= number;
}
return result;
}
}
'Java' 카테고리의 다른 글
5주차 과제: 클래스 (0) | 2020.12.14 |
---|---|
4주차 과제: 제어문 (0) | 2020.12.12 |
3주차 과제: 연산자 (0) | 2020.11.26 |
2주차 과제: 자바 데이터 타입, 변수 그리고 배열(피드백, feedback) (0) | 2020.11.22 |
2주차 과제: 자바 데이터 타입, 변수 그리고 배열 (0) | 2020.11.18 |