본문 바로가기

스파르타코딩클럽(내일배움캠프)

스파르타 코딩 클럽 3주차 3일

728x90

예외처리
예외처리는 자바에서 Throwable이라고 하고 Error랑 Exception으로 나뉜다.
Error는 동작 자체가 멈추는것이고
Exception은 동작자체는 멈추지 않고, 다른동작을 실행하거나 유저에게 알려주는 역할을 한다.

Try-catch 형식

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
    int number =10;
    int result;
    for (int i=10;i>=0;i--)
    {
        try{
            result= number/i;
            System.out.println(result);
        }
        catch (Exception e)
        {
            System.out.println("Exception occure"+ e.getMessage());
        }
        finally {
            System.out.println("항상 finally가 실행된다");
        }
    }

    }
}


Try-with-resouce 형식

import java.io.FileOutputStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {

        try (FileOutputStream out = new FileOutputStream("test.txt")) {
            // test.txt file 에 Hello Sparta 를 출력
            out.write("Hello Sparta".getBytes());
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

같은 코드 try-catch 형식

import java.io.FileOutputStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        FileOutputStream out = new FileOutputStream("test.txt");
        try {
            // test.txt file 에 Hello Sparta 를 출력
            out.write("Hello Sparta".getBytes());
            out.flush();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        out.close();
    }
}

0레벨 프로그래머스 안전지대
59.3점 자리 코드

class Solution {
    public int solution(int[][] board) {
        int answer = 0;
        int[][] check = new int[101][101];
        for(int i=0;i<board.length;i++)
        {
            for(int j=0;j<board[i].length;j++)
            {
                if(board[i][j]==1)
                {
                    if((i-1)<0 || (j-1)<0 || (i+1)>(board.length-1)|| (j+1)>(board[i].length-1) ) continue;

                    check[i][j]=1;
                    check[i][j+1]=1;
                    check[i][j-1]=1;
                    check[i+1][j]=1;
                    check[i-1][j]=1;
                    check[i+1][j+1]=1;
                    check[i+1][j-1]=1;
                    check[i-1][j+1]=1;
                    check[i-1][j-1]=1;
                }
            }
        }
        for(int i=0;i<board.length;i++)
        {
            for(int j=0;j<board[i].length;j++)
            {
                if(check[i][j]==0)
                {
                    answer++;
                }
            }
        }
        return answer;
    }
}

100점 짜리코드

class Solution {
    public int solution(int[][] board) {
        int answer = 0;
        int x[] = {0,0,1,-1,1,1,-1,-1};
        int y[] = {1,-1,0,0,1,-1,1,-1};
        int[][] check = new int[board.length][board[0].length];
        for(int i=0;i<board.length;i++)
        {
            for(int j=0;j<board[i].length;j++)
            {
                if(board[i][j]==1)
                {
                    check[i][j]=1;
                    for(int k=0;k<8;k++)
                    {
                        int ny = i+y[k];
                        int nx = j+x[k];
                        if(ny>=0 && nx>=0 && ny<=(board.length-1) && nx<=(board[i].length-1))
                        {
                            check[ny][nx]=1;
                        }
                    }

                }
            }
        }
        for(int i=0;i<check.length;i++)
        {
            for(int j=0;j<check[i].length;j++)
            {
                if(check[i][j]==0)
                {
                    answer++;
                }
            }
        }
        return answer;
    }
}

문제점 : 범위의 문제가 있었다. 미리계산해주고, 범위에 들어가면 무조건 넣어라!!!

프로그래머스 각도기
class Solution {
public int solution(int angle) {
int answer=0;
if(angle<90)
{
answer=1;
}
else if(angle==90)
{
answer=2;
}
else if(angle>90 && angle<180){
answer=3;
}
else{
answer=4;
}

return answer;
}
}

프로그래머스 옷가게
class Solution {
public int solution(int price) {
int answer = 0;
if(price<100000){answer=price;}
else if(price>=100000 && price <300000){answer=(int)(price*0.95);}
else if(price>=300000 && price <500000){answer=(int)(price*0.9);}
else{answer=(int)(price*0.8);}
return answer;
}
}

프로그래머스 369게임
class Solution {
public int solution(int order) {
int answer = 0;
String str = Integer.toString(order);
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='3' ||str.charAt(i)=='6' ||str.charAt(i)=='9'){
answer++; }
}
return answer;
}
}

728x90