국비수업/CODE
code 실습 / 9️⃣
밀김
2023. 2. 27. 11:01
728x90
{
int[] nums = {2,3,42,4,5,56,5,32,5,3,2,1};
//위 배열을 모두 출력하는 코드를 작성
for(int i=0; i<nums.length; i++) {
System.out.println(nums[i]);
}
{
//위 배열을 뒤의 숫자부터 모두 출력하시오
int[] nums = {2,3,42,4,5,56,5,32,5,3,2,1};
for(int i=0; i<nums.length; i++) {
System.out.println(nums[nums.length-1-i]);
}
}
---------------------------------------------------------------------------------
//2의 배수 위치의 숫자만 출력(0제외)
//등차수열 기본식: an=a1+(n-1)*d -> {2,4,6,8,10,...}요런값이 나옴
//a1=초항(2,4,6,8중에서 첫번째값) / n:~번째 / d=공차(증가하거나 감소하거나)
{
int[] nums = {2,3,42,4,5,56,5,32,5,3,2,1};
for(int i=0, n=1; i<nums.length; i++) {
//n은 ~번째인데 1부터 시작하는 이유는 (n-1)즉,1-1을 해야 0부터 시작하기 때문에
if(i==2+(n-1)*2) {
//an=a1+(n-1)*d
System.out.println(nums[i]);
n++;
//n이 ~번째라서 계속 다음 순서로 가야하니까 n++
}
}
}
{
//위 배열에서 인덱스 2,4,8 의 배열값 출력
//등비수열 기본식을 자바식으로 바꾸면, an=d*Math.pow(a1, m-1)
//a1*r^(n-1) / a=2
//r=값이 몇배씩 커지는지(2배니까 r=2) / n-1 = ~번째
int[] nums = {2,3,42,4,5,56,5,32,5,3,2,1};
for(int i=0, n=1; i<nums.length; i++) { //n은 ~번째
if(i==2*Math.pow(2, n-1)) {
//a1*r^(n-1) ^은, n승이라는 기호. 자바는 이런 기호가 없어서 math.pow를 쓴다
System.out.println(nums[i]);
n++;
}
}
}
int[] nums = {2,3,42,4,5,56,5,32,5,3,2,1};
int sum=0;
{
for(int i=0; i<nums.length; i++) {
if(nums[i] != 5) {//5가 아니면(=5를 만날때까지)
sum += nums[i];//값을 더해서 sum에 누적하고
}else {//5가 아닌게 아니면(=5를 만나면)
break;//구문을 멈춰라
}
}
System.out.println(sum);
}
}
//첫번째 5를만나면서부터 끝까지의 숫자를 더해서 결과 출력
{
int[] nums = {2,3,42,4,5,56,5,32,5,3,2,1};
int sum=0;
for(int i=0; i<nums.length; i++) {
if(nums[i]==5) {//i가 첫번째 5를 만났을때
for(int j=0; j<nums.length-i; j++) {//5만나고 뒤에서부터 끝까지 숫자를 더하기 위한 for문
//-i를 하는 이유는 i전에 있는 숫자들이(i==5) 같이 더해지면 안되니까 전체 nums길이중에서 i의 길이만큼 빼준다
sum += nums[j+i];//j+i를 하는 이유는 첫번째 5(i==5)를 더하기에 포함해야 하니까 첫번째5부터 그 뒤에 숫자까지(j) 더해줌
}break;//5를 한번 만나고 끝내야하니까 break를 써준다. break를 생략하면 두번째 5를 또 만나게 되니까 맨첫번째 for문이 한번 더 돈다.
}
}//i와 j는 같은 index이다..for문 괄호 안에 있으니까..
System.out.println(sum);
}
//첫번째 5를만나면서부터 끝까지의 숫자를 더해서 결과 출력, 다른 조 코드 (좋은 코드)
{
int[] nums = {2,3,42,4,5,56,5,32,5,3,2,1};
int idx5 = -1; //index 순서와 겹치지 않게 초기화를 -1로 해줌
int sum = 0; //누적값을 저장하기 위한 변수
for(int i=0; i<nums.length; i++)
if(nums[i] == 5) { //값5를 만나면
idx5 = i; //값5의 인덱스를 idx5에 저장 하고
break; //구문 중지
}
int size = nums.length-idx5;
//배열 nums의 길이 - 값5의 인덱스 를 size변수에 저장
for(int i=0; i<size; i++)
//5뒤에 숫자들을 더하기 위한 반복문
sum += nums[i+idx5];
//sum = sum+nums[i+idx5];
//누적값을 저장하기 위한 변수 sum에 첫번째5와 그 뒷값들을 저장해준다(i+idx5)
System.out.println(sum);
//누적값 출력
}
★ 불필요한 흐름이 적고, 중첩이 없는 코드가 좋은 코드이다 ★
728x90