오늘은 반복문에 대하여 다뤘는데 프로그래밍언어 중에 기본적으로 들어가는 것들이 변수, 연산자, 반복문, 조건문, 함수 등등이 있다. 그 중에서 반복문을 어떻게 사용하고 이것을 활용하여 페어와 함께 많은 문제들을 풀면서 여러 난관을 해결하는 재미들이 있었다. 오늘 라이브세션을 통해서 코드스테이츠 엔지니어분이 해주신 말이 기억에 남는다.
🔥 문법은 최소한으로.. 연습은 많이!
예전 수강생 중에 마치 문법이나 이런 것들을 깜지를 써가며 공부했던 분이 있었다. 정말 열심히 하는 분이 계셨는데 코드가 써지지 않는다며 상담을 하셨다고 한다. 이 얼마나 안타까운 일인가. 그래서 문법은 최소한으로 배우고 (100 기준 20) 연습을 많이하라고 하셨다. (80) 구현하고자 하는 것을 생각 할 때 코드가 어느정도는 손에서 나가도록..
나는 독학으로 javascript와 react를 배우고 혼자서 사이드 프로젝트를 해보면서 프로그래밍은 외운다기보다는 기본 적인 것을 알고 그것을 활용해가며 계속 익히게 되는 것이라는 생각이 들었다. 내 머리속의 구상을 코드화 하는 시도를 반복하면서 절로 익히게 되는 것, 이런 방향으로 공부를 계속 해야겠다.
반복문 - for문 기초
for문
은 해당 횟수만큼 반복 할 때 많이 쓰이며 문자열이나 배열의 길이만큼 순회할 때도 많이 쓰인다. 또는 for문
안에 for문
을 이중으로 만들어서도 많이 쓰이기 때문에 여러 방법으로 사용하는 것을 연습해보면 좋다.
public class Main {
public static void main (String[] args) {
// for문 기본 모습
//for (변수 초기값; 조건식; 증감식) {
// 해당 조건 동안 할 행동
// }
// 실제 예시
// 1부터 10까지 콘솔에 출력하는 for문
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
}
}
하나하나 위의 식을 이야기해보면 괄호 안에 int i = 1
은 i
변수의 초기값을 설정해준다. 이 i
의 값을 어떻게 증가시키고 어떤 조건을 만드는지에 따라서 반복 횟수가 달라진다. ;
세미콜론은 각각의 식을 구분 하는 역할을 한다. 조건식
에서 i <= 10
은 앞에서 초기화한 변수 i 가 10 이하이거나 같으면 아래 {} 이 블럭 안에 있는 코드를 실행하겠다는 이야기이다.
코드가 여기에서 끝나게 되면 i = 1
로 항상 조건이 true
이기 때문에 영원히 이 반복문에서 빠져나올 수 없다. 그래서 증감식을 통해서 변화를 주어야 한다. 마지막 세번째 i++
은 i = i + 1
과 같다. 즉 i에 1을 하나씩 더해줘서 i가 어느새 11이 된다면 조건식 i <= 10
은 성립하지 않기 때문에 이 반복문이 끝나게 된다.
글로 이해가 되지 않는다면 직접 코드를 intelliJ에 복사해서 값을 바꿔가며 확인해보라 그것이 가장 빠르게 배우는 방법이다!
모르고 있었던 것!
do-while문
- 이전에 알고 있었던 개념
do-while문을 쓰면 do는 그냥 한번만 실행 할 것이고 나머지는 while문에서 정의되서 하는것이라 생각 - 새롭게 다시 알게된 개념
do-while문에서 do는 일단 do 안에 있는 것을 실행하고 while의 조건이 충족되었는지 확인 후에 다시 do부터 실행
예시) 주사위 굴리기 프로그램
public class Test {
public static void main(String[] args) {
// 지정한 숫자가 나올 때까지 주사위를 던지는
// 프로그램을 만든다고 가정해보자
int myPick = 4; // 1 ~ 6중에 내가 정한 숫자
int randomNum = 0; // 랜덤 숫자 초기화
int count = 0; // 주사위를 굴린 횟수
do {
randomNum = (int) (Math.random() * 6) + 1; // 1 ~ 6 까지 임의의 숫자
count++; // 주사위 굴린 횟수 추가
} while (myPick != randomNum); // myPick과 randomNum이 같지 않다면 다시 do로 이동
System.out.println("주사위를 " + count + "번 굴려서 내가 선택한 번호가 나왔습니다");
}
}
데이터타입 : char + int = char를 int(유니코드)로 변환하여 계산 한다
// word라는 문자열을 받아 문자열을 분해해
// 각각의 문자열 + 인덱스 번호를 출력하는 프로그램
// 예시 ) fire -> f0i1r2e3
String result = "";
for (int i = 0; i < word.length(); i++) {
result += word.charAt(i) + i; // 캐릭터 타입이라 유니코드 값이 연산됨
}
return result;
위와 같은 코드로 돌리면 예상치 못한 숫자만 나온다. 왜냐면 char
타입과 int
타입을 더하면 char
타입이 int
로 변환되어 계산되기 때문 그렇다면 이것을 어떻게 String
타입 처럼 이어붙이도록 할 수 있을까?
result += word.charAt(i) + i; // 이부분을 아래 처럼 변환하면 된다
result += "" + word.charAt(i) + i; // 빈문자열 ""이 더해지기 때문에 String 타입 연산으로 바뀐다
✨ 명확하지 않던 수학적 개념
<소수>
- 소수 -> 1과 자기 자신으로만 나누어 떨어지는 수
- 소수 -> 1이하의 수는 소수가 아니다
- 소수 -> 2는 짝수이면서 소수인 유일한 짝수이다 (즉 2를 제외한 나머지 짝수는 소수가 아니다)
- 소수 -> 제곱근을 이용하면 모든 수를 돌아가며 나누어서 떨어지는지 확인하지 않고 시간을 대폭 줄일 수 있다.
<펙토리얼>
- n-factorial(n!) 은 1부터 n까지의 곱한 수를 의미한다
- 예시) 4! -> 1 * 2 * 3 * 4 를 의미
<약수>
- 나누어 떨어지는 수
- 1과 자기 자신을 포함해서 1 ~ 자기자신까지 나누어 떨어지는 모든 수
- 예시) 8 -> 1, 2, 4, 8
'개발일지' 카테고리의 다른 글
[KPT] Section 1을 마치며 하는 회고 feat. 코드스테이츠 백엔드 (0) | 2023.03.13 |
---|---|
[TIL] Java 객체지향프로그래밍 - 생성자와 생성자 오버로딩 (0) | 2023.03.01 |
[TIL] Java 기초 - If 조건문, 에러 해결 (0) | 2023.02.21 |
[TIL] Java 변수, 데이터 타입, 문자열 (0) | 2023.02.18 |
[TIL] Git, GitHub 기초 (1) | 2023.02.17 |